단순 선택 정렬 알아보기
다음은 단순 선택 정렬 알고리즘을 적용합니다. 가장 작은 값의 요소부터 정렬하므로 1을 선택해 정렬합니다.
| start | 6 | 4 | 8 | 3 | 1 | 9 | 8 |
|---|---|---|---|---|---|---|---|
| 2차 | 1 | 4 | 8 | 3 | 6 | 9 | 8 |
| 3차 | 1 | 3 | 8 | 4 | 6 | 9 | 8 |
1과 6을 교환 한 뒤 두번째로 작은 요소인 3을 선택해 4와 교환합니다. 이처럼 가장 작은 요소를 선택 한 뒤 아직 정렬하지 않은 부분의 첫번째와 교환합니다.
단순 선택 정렬의 교환 과정은 다음과 같습니다.
- 아직 정렬하지 않은 부분에서 가장 작은 키값을 선택합니다.
- 아직 정렬하지 않은 부분의 첫번째 요소와 교환 합니다.
다음은 위 내용을 바탕으로 작성한 단순 선택 정렬 프로그램입니다:
//--- 단순 선택 정렬 ---//
static void selectionSort(int[] a, int n) {
for (int i = 0; i < n - 1; i++) {
int min = i; // 아직 정렬되지 않은 부분에서 가장 작은 요소의 인덱스를 저장
for (int j = i + 1; j < n; j++)
if (a[j] < a[min])
min = j;
swap(a, i, min); // 아직 정렬되지 않은 부분의 첫 요소와 가장 작은 요소를 교환
}
}