선택 정렬 (Selection Sort) 알고리즘
- 최솟값 혹은 최댓값을 찾아 첫 번째 위치에 놓고, 나머지 중 다시 값을 찾아 다음 위치로 정렬하는 알고리즘
ex) 5, 8, 2, 4, 3를 정렬해보자
1round.
비교 | i = 0 (해당 위치 변경),
p = i (교환 인덱스) |
5 ,8 (0 , 1) | 변화 X |
5, 2 (0 , 2) | p = 2 |
2 ,4 (2 , 3) | 변화 X |
2 ,3 (3, 4) | 변화 X |
if ( i ≠ p ) 2, 8, 5, 4, 3 (i, p 교환)
2round.
비교 | i = 1 (해당 위치 변경),
p = i (교환 인덱스) |
8, 5 (1, 2) | p = 2 |
5, 4 (2, 3) | p = 3 |
4, 3 (3, 4) | p = 4 |
if ( i ≠ p ) 2, 3, 5, 4, 8
3round.
비교 | i = 2 (해당 위치 변경),
p = i (교환 인덱스) |
5, 4 (2, 3) | p = 3 |
4, 8 (3, 4) | p = 4 |
if ( i ≠ p ) X
4round.
비교 | i = 3 (해당 위치 변경),
p = i (교환 인덱스) |
5, 8 (3, 4) | 변화 X |
if ( i ≠ p ) 2, 3, 4, 5, 8
public class SelectionSort {
public static void main(String[] args) {
int[] arr = { 5, 8, 2, 4, 3};
for (int rep = 0; rep < arr.length-1; rep++) {
int min = rep;
// rep번째 보다 rep+1이 크면 min은 rep + i번째 자리에 있다
for (int i = rep + 1; i < N; i++) {
if (arr[min] > arr[i])
min = i;
}
// 최솟값 순으로 rep에 위치
if ((rep) != min) {
int temp = arr[rep];
arr[rep] = arr[min];
arr[min] = temp;
}
}
for (int i = 0; i < N; i++)
System.out.println(arr[i]);
}
}

Share article