Algorithm/자료구조 & 알고리즘

정렬 알고리즘 - 선택 정렬 (Selection Sort)

pinevienna 2021. 8. 13. 23:13

 

 

선택 정렬은 가장 작은 요소부터 선택해 알맞은 위치로 옮겨서 순서대로 정렬하는 알고리즘이다.

최선, 평균, 최악 모두 O(N^2)의 시간복잡도를 가진다.

 

 

 

1. 아직 정렬되지 않은 부분에서 가장 작은 요소 selection[i]를 선택

2. selection[i]와 아직 정렬되지 않은 부분의 첫번째 요소를 교환

3. n-1회 반복

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void selectionSort(int[] list) {
    int indexMin, temp;
 
    for (int i = 0; i < list.length - 1; i++) {
        indexMin = i;
        for (int j = i + 1; j < list.length; j++) {
            if (list[j] < list[indexMin]) {
                indexMin = j;
            }
        }
        temp = list[indexMin];
        list[indexMin] = list[i];
        list[i] = temp;
    }
}
cs

출처 : 위키백과

 

선택 정렬은 동일한 값에 대해 기존의 순서가 뒤바뀔 수 있는 불안정한 정렬이다.