본문 바로가기

Algorithm/정렬과 탐색

계수 정렬 (Counting Sort)

계수 정렬 (Counting Sort)

 : 각각의 데이터가 몇 번씩 등장했는지를 세는 방식으로 동작하는 정렬 알고리즘

 : 데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을 때 사용 가능한 정렬 알고리즘

 : 요소 값들끼리 서로 비교하지 않고 정렬 수행

 : 특정 조건 부합 시에만 사용 가능하지만, 특정 조건 만족 시 퀵 정렬보다도 빠르게 동작함

 : '배열 내 최대값 + 1' 길이의 배열 필요 -> 메모리 낭비 가능성 존재 ( = 상대적으로 공간 복잡도 높다)

 : 동일 값 가지는 데이터 여러 개 등장할 때 효과적

 

계수 정렬 동작 과정

1. 카운팅 배열 생성

 : 가장 작은 데이터부터 가장 큰 데이터까지의 모든 범위를 포함할 수 있는 배열

 : 배열 내의 원소 값들의 개수를 저장하는 배열

 

2. 순회하며 각 데이터가 몇 번씩 등장했는지 횟수 count

 

3. 리스트의 첫 번째 데이터부터 하나씩 count 값만큼 반복하며 인덱스 출력

   -> 출력 결과가 정렬의 결과와 동일

 

계수 정렬의 시간 복잡도와 공간 복잡도

시간 복잡도 : O(N+K)

공간 복잡도 : O(N+K)

 

데이터의 개수(N)만큼 데이터를 하나씩 확인하며 등장 횟수를 세어줌

가장 큰 데이터 값인 K만큼, 각 인덱스를 확인하며 각 인덱스에 기록되어 있는 값 만큼 출력 수행

'Algorithm > 정렬과 탐색' 카테고리의 다른 글

버블 정렬 (Bubble Sort)  (0) 2021.12.01
정렬 (Sort)  (0) 2021.12.01
퀵 정렬 (Quick Sort)  (0) 2021.11.26
삽입정렬 (insertion sort)  (0) 2021.11.26
선택 정렬 (Selection Sort)  (0) 2021.11.26