단순 선택 정렬 알아보기

다음은 단순 선택 정렬 알고리즘을 적용합니다. 가장 작은 값의 요소부터 정렬하므로 1을 선택해 정렬합니다.

start6483198
2차1483698
3차1384698

1과 6을 교환 한 뒤 두번째로 작은 요소인 3을 선택해 4와 교환합니다. 이처럼 가장 작은 요소를 선택 한 뒤 아직 정렬하지 않은 부분의 첫번째와 교환합니다.

단순 선택 정렬의 교환 과정은 다음과 같습니다.

  1. 아직 정렬하지 않은 부분에서 가장 작은 키값을 선택합니다.
  2. 아직 정렬하지 않은 부분의 첫번째 요소와 교환 합니다.

다음은 위 내용을 바탕으로 작성한 단순 선택 정렬 프로그램입니다:

//--- 단순 선택 정렬 ---//
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); // 아직 정렬되지 않은 부분의 첫 요소와 가장 작은 요소를 교환
	}
}