[algorithm] 선택 정렬 (Selection Sort)

백광현·2022년 7월 9일
0

💪 Selection Sort(선택정렬)

문제

정렬 알고리즘은 순서가 없던 데이터를 순서대로 바꾸어 나열하는 알고리즘입니다. 정렬을 하는 방법은 여러가지가 있는데, 그 중에 유명한 알고리즘은 아래 4가지가 있습니다.

  • 선택정렬
  • 버블정렬
  • 삽입정렬
  • 퀵정렬
    오늘은 선택정렬을 배우겠습니다. 선택정렬은 정렬되지 않은 데이터 중 가장 작은 데이터를 선택해서 맨 앞에서부터 순서대로 정렬해 나가는 알고리즘입니다.

정렬을 해야하는 배열은 [7,5,4,2] 입니다.

첫 번째 loop에서는 index 0부터 3까지 확인하며 가장 작은 수를 찾습니다. 2 이므로 index 0의 7과 교체합니다. -> [2,5,4,7]

두 번째는 index 1부터 3까지 확인하며 가장 작은 수를 찾습니다. 4이므로 index 1의 5와 교체합니다 -> [2,4,5,7]

세 번째는 index 2부터 3까지.. 이런식으로 가장 작은 수를 선택해서 순서대로 교체하는 것을 선택정렬이라고 합니다.

nums라는 정렬되지 않은 숫자 배열을 주면, 오름차순(1,2,3..10) 으로 정렬된 배열을 return해주세요.

const selectionSort = (nums) => {
  for(let i = 0; i < nums.length-1; i++){
    let lessIndex = i
    for(let k=i+1; k < nums.length; k++){
      if(nums[lessIndex] > nums[k]) 
        lessIndex = k
    } 
    if(lessIndex > i){
      const changeNum = nums[i]
      nums.splice(i, 1, nums[lessIndex])
      nums.splice(lessIndex, 1, changeNum)
    }
  }
  return nums
}

console.log(selectionSort([7,5,4,2]))

이중 반복문을 사용하여 배열의 index0과 1부터 값을 비교. 앞의 값이 더 클경우 splice를 사용하여
두 수의 자리를 바꾸는 방식으로 풀이하였다.

0개의 댓글