컴퓨터기본/알고리즘
5. 계수 정렬 (Counting Sort)
차가운오미자
2021. 6. 14. 21:46
범위 조건이 있는 경우에 굉장히 빠른 알고리즘
시간 복잡도: O(N)
단순하게 '크기를 기준으로' 세는 알고리즘
예시) 숫자는 1에서 5사이의 정수
1 3 2 4 3 2 5 3 1 2 3 4 4 2 5 1 2 3 5 2 3 1 4 3 5 2 1 1 1
1이 몇 개인지, 2가 몇 개인지.... 5가 몇 개인지 셈
#include <stdio.h>
int main(void){
int temp;
int count[5];
int arr[30] = {
1, 3, 3, 5, 2, 3, 4, 2, 4, 4,
5, 3, 4, 2, 1, 1, 2, 3, 5, 3,
2, 4, 4, 1, 2, 3, 3, 2, 5, 3};
// 배열 초기화
for(int i = 0; i<5; i++){
count[i] = 0;
}
for(int i = 0; i<30; i++){
count[arr[i]-1]++;
}
for(int i = 0; i<5; i++){
if(count[i] != 0){
for(int j = 0; j<count[i]; j++){
printf("%d ", i+1);
}
}
}
return 0;
}