계수 정렬

Siwoo Pak·2021년 10월 5일
0

자료구조&알고리즘

목록 보기
25/38

계수 정렬(count sort)

  • 값들을 비교하지 않기 때문에 O(k+n)시간 안에 수행됨.
  • 숫자에 대해서만 동작하면 특정 범위가 주어져야 함.
  • 항목들을 교환하면서 정렬하는 대신에 배열의 각 항목의 등장 횟수를 셈.
  • 각 항목의 등장 횟수를 센 다음 해당 등장 횟수를 사용해 새로운 배열을 생성할 수 있음.
  • 계수 정렬은 항목들을 교환하지 않고도 자료를 정렬함.

코드 구현

const countSort = array => {
  let hash = {}, countArr = [];
  
  for(let i=0; i<array.length; i++) {
    if(!hash[array[i]]) hash[array[i]] = 1;
    else hash[array[i]]++;
  }
  
  for(let key in hash) {
    for(let i=0; i<hash[key]; i++) {
      countArr.push(parseInt(key));
    }
  }
  return countArr;
}

countSort([6,1,23,2,3,2,1,2,2,3,3,1,123,123,4,2,3]);
profile
'하루를 참고 인내하면 열흘을 벌 수 있고 사흘을 참고 견디면 30일을, 30일을 견디면 3년을 벌 수 있다.'

0개의 댓글