record logo record

계수 정렬(Counting Sort) 이란?

계수 정렬(Counting Sort) 알고리즘의 특징

계수 정렬(Counting Sort)의 알고리즘 예시

결과 적으로 1 1 2 2 2 3 3 3 3 4 4 5 결과를 출력하게된다.

Source Code

#include <stdio.h>

int main(void){
	int tmp;
	int count[5];
	int array[30] = {
		1, 3, 2, 4, 3, 2, 5, 3, 1, 2,
		3, 4, 4, 3, 5, 1, 2, 3, 5, 2,
		3, 1, 2, 5, 3, 4, 1, 2, 1, 1
	};
	for(int i = 0; i < 5; i++){
		count[i] = 0;
	}
	for(int i = 0; i < 30; i++){
		count[array[i] - 1]++;
	}
	for(int i = 0; i < 5 ; i++){
		if(count[i] != 0){
			for(int j = 0; j < count[j]; j++){
				printf("%d ", i+1);
			}
		}
	}
	
	return 0;
} 

계수 정렬(Counting Sort)의 시간복잡도

계수 정렬의 시간 복잡도는 O(N + k) 이다.

정렬 알고리즘 시간복잡도 비교

관련된 Post

References