선택정렬
알고리즘 공부 간 기록이 필요한 문제들에 대한 정리를 기록하는 포스트 입니다.
개요
최근 알고리즘을 다시한번 정리해보는 차원에서 하나하나 다시 풀어보고 있다.
풀면서 뭔가 다른사람들이 푼 좋은 아이디어도 얻게되고 좋은것 같다. 이번에도 가장 기본이 되는 선택정렬을 풀어 보았다.
1. 문제 요건
- 입력된 배열값을 선택정렬하라.
2. 코드
function solution(length, arr) {
// 얕은 복사
let answer = arr
// 기준이 되는 반복문(length-1 로 조건을 변경해도 무방)
for(let i=0; i<length; i++) {
// idx 즉, j 반복문이 돌면서 가장 작은 값이 있는 index 를 의미
let idx = i;
// 반복문을 통해 가장 작은 수를 찾는다.
for(let j=i+1; j<length;j++) {
if(arr[j] < arr[idx]) {
idx = j
}
}
// 최신 Javascript 가 제공하는 배열내 값 바꾸기!
[arr[i], arr[idx]] = [arr[idx], arr[i]]
}
return answer
}
console.log(solution(6, [13,5,11,7,23,15]));
3. 결과정리
단순한 선택정렬이다.
가장 KeyPoint
는 i
for 문이 기준이되고 j
를 통해서 작은값의 위치를 idx
변수에 넣은뒤 바꿔치기 하는부분이다.
물론 이 과정에서 idx
의 위치 그리고 j
반복문의 시작점등이 고려되야 할 것이다.
그리고 이전에는 같은 배열 내 값을 변경할때 temp
같은 신규 변수를 사용하여 바꿔치기 하였으나, 이렇게 변경하는 기능이 있어서
사용해보았다.