선택정렬


:raising_hand: 알고리즘 공부 간 기록이 필요한 문제들에 대한 정리를 기록하는 포스트 입니다.


개요


최근 알고리즘을 다시한번 정리해보는 차원에서 하나하나 다시 풀어보고 있다.

풀면서 뭔가 다른사람들이 푼 좋은 아이디어도 얻게되고 좋은것 같다. 이번에도 가장 기본이 되는 선택정렬을 풀어 보았다.

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. 결과정리


단순한 선택정렬이다.

가장 KeyPointi for 문이 기준이되고 j를 통해서 작은값의 위치를 idx 변수에 넣은뒤 바꿔치기 하는부분이다. 물론 이 과정에서 idx의 위치 그리고 j 반복문의 시작점등이 고려되야 할 것이다.

그리고 이전에는 같은 배열 내 값을 변경할때 temp같은 신규 변수를 사용하여 바꿔치기 하였으나, 이렇게 변경하는 기능이 있어서 사용해보았다.