
Bubble Sort과 유사한 알고리즘으로, 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘이다.
이 알고리즘은 2가지 subarray를 가진다.
오름차순 정렬일 경우 다음과 같다.


void selectionSort(int arr[]) {
int n = arr.length;
// 정렬되지 않은 subarray에서 하나씩 비교
for (int i = 0; i < n - 1; i++) {
int min_idx = i;
for (int j = i + 1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// Swap
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
이중 루프를 사용하기 때문에 의 시간복잡도를 가진다 (best, average, worst case 모두 동일하다).
→ = =
선택 정렬은 in-place 알고리즘으로, 추가적인 자료구조를 사용하지 않는다.
Auxiliary Space (보조 공간) :