[4, 6, 3, 4, 2, 8]
배열에 중복된 값이 있을 때, 정렬 과정에서 이 두 4
중 어느 하나가 다른 위치로 이동할 때, 그들 사이의 원래 순서가 바뀔 수 있다. 즉, 처음 배열에서 앞에 있던 4
가 정렬 후에는 뒤에 있던 4
뒤로 이동할 수 있어, 두 4
의 상대적인 순서가 뒤바뀌게된다.예를 들어, 아래와 같은 배열이 있다.
작은 수부터 큰 수로 나열한다고 했을 때,
첫 번째 순회
배열 전체 [4, 6, 3, 2, 8]
에서 최소값 2를 찾아 첫번째 위치의 4와 교환한다.
2와 첫 번째 위치의 4를 교환합니다.
결과: [2, 6, 3, 4, 8]
두 번째 순회
남은 배열 [6, 3, 4, 8]
에서 최소값 3을 찾아 현재 순회의 시작 위치인 6을 교환한다.
결과: [2, 3, 6, 4, 8]
세 번째 순회
남은 배열 [6, 4, 8]
에서 최소값 4를 찾아 현재 순회의 시작 위치인 6을 교환한다.
4와 현재 순회의 시작 위치인 6을 교환합니다.
결과: [2, 3, 4, 6, 8]
네 번째 순회
남은 배열 [6, 8]
에서 6이 이미 최소값이므로 교환 없이 유지한다.
결과: [2, 3, 4, 6, 8]
아래 소스는 선택 정렬을 알고리즘 구현한 소스이다.
function selectionSort(arr) {
for(let i = 0; i < arr.length; i++) {
let index = i;
for(let j = i + 1; j < arr.length; j++) {
if(arr[j] < arr[index]) {
index = [j]
}
}
let temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
return arr;
}
selectionSort([1, 5, 3, 2, 6]);