선택 정렬 (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