[TIL] 선택 정렬
선택정렬의 이해
- selection sort
- 배열을 처음부터 끝까지 돌리면서, 현재 인덱스에 들어갈 값을 찾아 바꾸는 간단한 알고리즘
- 최소 선택 정렬, 최대 선택 정렬
- 오름차순, 내림차순
- O(n2)의 시간 복잡도와 O(n)의 공간 복잡도
방법1. for loop으로 구현
function get(str) {
let arr = str.split(' ').map((n) => parseInt(n, 10));
// 첫번 째 elem 은 i
for (let i = 0; i < arr.length; i++) {
// 첫번째 값을 최소값이라고 가정하고 저장
let min = i;
// 두번째 elem 은 j
for (let j = i + 1; j < arr.length; j++) {
// 만약 첫번째 elem > 두번째 elem 이면 최소값min 을 j로 업데이트
if (arr[min] > arr[j]) {
min = j;
}
}
// 이제 최소값이랑 i랑 다르므로 두개의 위치를 swap 해줌
if (i !== min) {
let temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
return arr;
}
console.log(get('4 23 8 5 7 41'));
방법2. map으로 구현
기본개념은 위와 같다. 단지 map으로 구현한 것만이 다른 점이다.
function get(str) {
let arr = str.split(' ').map((n) => parseInt(n, 10));
let len = arr.length;
arr.map((elem, idx) => {
let min = idx; // storing index of the minimum value
for (let j = i + 1; j < len; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
if (i !== min) {
// destruturing으로 순서를 바꿔준다.
[arr[i], arr[min]] = [arr[min], arr[i]];
}
});
return arr;
}
console.log(get('4 23 8 5 7 41'));
Author And Source
이 문제에 관하여([TIL] 선택 정렬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mochapoke/TIL-선택-정렬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)