TIL DAY.30 CodeKata 선택정렬(Selection Sort)

Dan·2020년 10월 5일
2

선택정렬 (Selection Sort)

오늘 코드카타에서는 정렬알고리즘 중에 하나인 선택정렬에 대해서 문제를 풀어보며 배워보는 시간을 갖겠다.
일단 정렬 알고리즘은 순서가 없던 데이터를 순서대로 바꾸어 나열하는 알고리즘이다. 정렬하는 방법에는 여러가지가 있지만 그중에서 제일 유명한 알고리즘은 4개로 간추려진다.
1. 선택정렬
2. 버블정렬
3. 삽입정렬
4. 퀵정렬

여기서 선택정렬은 정렬되지 않은 데이터 중에 가장 데이터를 찾아서 인덱스 값 제일 맨 앞으로 오게하고 그 자리에 있던 숫자를 맨 뒤로 보내며 정렬해 나가는 알고리즘이다. 아래 그림을 보면 쉽게 이해할 수 있다.

오늘의 코드카타 과제는 nums라는 정렬되지 않은 숫자 배열을 주면, 오름차순(1,2,3..10) 으로 정렬된 배열을 return 해야한다.

My solution

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

for loop을 이용해서 i 인덱스와 j 인덱스 즉, [0],과 [1] 을비교하고 [1] 가 더 작은 숫자를 갖고 있을시 [1]을 minIndex로 지정해주며 최소값을 찾는 원리이다. 그리고 찾은 최소값을 맨 앞의 인덱스와 자리를 바꾼다.

profile
만들고 싶은게 많은 개발자

2개의 댓글

comment-user-thumbnail
2020년 10월 9일

와 멋있다!!!

답글 달기
comment-user-thumbnail
2020년 10월 9일

호균님 블로그 잘 보고 갑니다 ^^
발렌타인보이

답글 달기