선택 정렬이란?
'정렬되지 않은 부분'에서 '최소/최대 값'을 구해서 '정렬되지 않은 부분'의 '첫번째 요소'와 바꾸는 정렬 방법이다.
1 단계: '정렬되지 않은 부분' 안에서 최소 값을 찾는다.
2 단계: '최소 값'을 선택해서 '정렬되지 않은 부분의 1번째 요소'와 교환한다.
(이 작업이 최소 값을 정렬된 부분의 마지막 요소로 만든다.)
3 단계: '정렬되지 않은 부분'의 시작 위치를 1칸 뒤로 옮긴다.
(이 작업이 '정렬되지 않은 부분'의 범위를 하나씩 줄이게 된다.)
4 단계: '정렬되지 않은 부분'의 요소 수가 1이 될 때까지 1~3 단계를 반복한다.
function solution(arr) {
let answer = arr;
for (let i = 0; i < arr.length - 1; i++) {
let idx = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[idx]) idx = j;
}
// swap
[arr[i], arr[idx]] = [arr[idx], arr[i]];
}
return answer;
}
let arr = [13, 5, 11, 7, 23, 15];
console.log(solution(arr));