코드카타 #21

TaeYang·2021년 10월 17일
0

CodeKata

목록 보기
7/8

문제

정렬 알고리즘은 순서가 없던 데이터를 순서대로 바꾸어 나열하는 알고리즘입니다. 정렬을 하는 방법은 여러가지가 있는데, 그 중에 유명한 알고리즘은 아래 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까지.. 이런식으로 가장 작은 수를 선택해서 순서대로 교체하는 것을 선택정렬이라고 합니다.

Problem Statement
nums라는 정렬되지 않은 숫자 배열을 주면, 오름차순(1,2,3..10) 으로 정렬된 배열을 return해주세요. 선택정렬 알고리즘으로 구현하셔야겠죠??


풀이


const selectionSort = (nums) => {
  for (let i = 0; i < nums.length - 1; i++) {
    for (let j = i + 1; j < nums.length; j++) {
      if (nums[i] > nums[j]) {
        let big = nums[i];
        nums[i] = nums[j];
        nums[j] = big;
      }
    }
  }
  return nums;
}

console.log(selectionSort([2, 7, 3, 1, 10])); 

결과// [ 1, 2, 3, 7, 10 ]

풀이 과정

  • 중첩 for문을 돌려줍니다 두번째 for 문은 i+1로!
  • 조건문으로 nums[i] > nums[j] 비교해줍니다.
  • 위에 조건이 트루일때 big 이라는 변수에 nums[i] 를 선언해 줍니다
  • 마찬가지로 트루일때 nums[i] = nums[j] 를 해줍니다
  • 또 트루일때 nums[j] = big를 해줍니다
  • 마지막으로 return nums 를 해줍니다
profile
음악 전공 이였던 예비 프론트엔드 개발자☀️

0개의 댓글