맨 앞의 값과 뒤의 값들을 비교해 더 작은 값이 나오면 위치를 바꾼다.
선택 정렬 과정 애니메이션으로 보기
https://visualgo.net/en/sorting?slide=4-1
주어진 배열 오름차순 정렬하기
// LEGACY VERSION (non ES2015 syntax)
function sselectionSort(arr){
for(var i = 0; i < arr.length; i++){
var lowest = i; // 최솟값 위치
for(var j = i+1; j < arr.length; j++){
if(arr[j] < arr[lowest]){
lowest = j; // 최솟값 위치 갱신
}
}
// i가 이미 최솟값이면 swap 하지 않게 조건 추가
if(i !== lowest){
//SWAP!
var temp = arr[i];
arr[i] = arr[lowest];
arr[lowest] = temp;
}
}
return arr;
}
swap 과정을 ES2015 문법으로 작성한 코드
// ES2015 VERSION
function selectionSort(arr) {
const swap = (arr, idx1, idx2) =>
([arr[idx1], arr[idx2]] = [arr[idx2], arr[idx1]]);
for (let i = 0; i < arr.length; i++) {
let lowest = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[lowest] > arr[j]) {
lowest = j;
}
}
if (i !== lowest) swap(arr, i, lowest);
}
return arr;
}
selectionSort([0,2,34,22,10,19,17]);