선택 정렬(Selection Sort)

이나영·2021년 10월 17일
0

알고리즘

목록 보기
5/8

1. 발상

① 전체 배열에서 가장 작은 숫자를 찾는다.
② 이 숫자가 index 0이 아니라면 해당 자리에 위치한 숫자와 자리를 서로 바꿔준다.
③ 이번에는 index 1부터 끝까지 중에서 가장 작은 숫자를 찾는다.
④ 마찬가지로 이 숫자가 index 1이 아니라면 해당 자리의 숫자와 자리를 바꿔준다.
⑤ 이렇게 배열의 끝까지 가장 작은 수를 선택해 자리를 교체해준다.

2. 구체적 예시

[7, 5, 4, 2] //index 0~3 중 가장 작은 숫자: 2
-> [2, 5, 4, 7] //index 1~3 중 가장 작은 숫자: 4
-> [2, 4, 5, 7] //더 없음.

3. 함수

const selectionSort = (nums) => {
  for(let i = 0; i < nums.length; i++) {
    let min = Math.min(...nums.slice(i));
    let minIndex = nums.indexOf(min);
    if(minIndex !== i) {
      nums[minIndex] = nums[i];
      nums[i] = min;
    }
  }

  return nums;
}

0개의 댓글