Algorithm
[Algorithm] 계수 정렬(Counting Sort)
_졍_
2023. 4. 9. 00:29
반응형
계수 정렬(Counting Sort)
범위 조건이 있을 때에 한해서 퀵 정렬(Quick Sort), 병합 정렬(Merge Sort), 힙 정렬(Heap Sort)보다 더 빠르게 정렬해야하는 경우 사용될 수 있는 알고리즘으로 단순히 크기를 기준으로 세는 알고리즘
모든 데이터에 한 번씩만 접근하면 된다는 점에서 매우 효율적인 알고리즘이다.
계수 정렬(Counting Sort) Sequence
더보기

DATA

초기 상태

결과



Code
#include <iostream>
using namespace std;
#define MAX 5
int arr[] = {1, 3, 2, 4, 3, 2, 5, 3, 1, 2, 3, 4, 4, 3, 5, 1, 2, 3, 5, 2, 3, 1, 4, 3, 5, 1, 2, 1, 1, 1};
int count_arr[MAX+1] = {0,};
int main(void){
for(int i=0;i<sizeof(arr)/4;i++){
count_arr[arr[i]]++;
}
for(int i=0;i<MAX+1;i++){
if(count_arr[i]== 0) continue;
for(int j=1;j<=count_arr[i];j++){
cout << i << " ";
}
}
return 0;
}
출력
1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 5 5 5 5
시간 복잡도
모든 원소를 한 번씩만 확인하기 때문에 O(N)
반응형