[java] 자바의 선택 정렬(Selection Sort) 알고리즘 이해하기

이번에는 자바에서 선택 정렬(Selection Sort) 알고리즘을 이해해보겠습니다. 선택 정렬은 가장 작은(또는 큰) 항목을 선택해서 정렬하는 알고리즘이고, 간단하지만 효율성이 떨어지는 알고리즘 중 하나입니다.

알고리즘 설명

선택 정렬은 배열을 순회하면서 현재 위치에서 그 다음 위치부터 끝까지 최소값(또는 최대값)을 찾아서 현재 위치와 교환하는 방식으로 동작합니다. 이를 배열 길이만큼 반복하면 정렬이 완료됩니다.

선택 정렬의 시간 복잡도는 O(n^2)으로 비효율적이지만, 간단하고 직관적인 구현으로 이해하기 쉽습니다.

자바 코드 예시

다음은 자바로 구현한 선택 정렬 알고리즘의 예시입니다.

public class SelectionSort {
    public void selectionSort(int[] arr) {
        int n = arr.length;
    
        for (int i = 0; i < n - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            
            int temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
        }
    }
}

결론

선택 정렬은 간단하지만 성능이 좋지 않아 실제로는 잘 사용되지 않습니다. 그러나 이해하기 쉬운 알고리즘이기 때문에 기본적인 정렬 알고리즘을 이해하고 구현하는 데 도움이 됩니다.

이상으로 자바의 선택 정렬 알고리즘에 대한 간단한 소개를 마치도록 하겠습니다.

참고문헌: