반응형
계수 정렬(Counting sort)
#include <stdio.h>
#include <stdlib.h>
#define MAX_NUMBER 10000
int main()
{
int maxnum =0, i = 0;
int *arr = NULL, *sort = NULL, *cnt = NULL;
scanf("%d", &maxnum);
arr = (int*)calloc(maxnum, sizeof(int));
sort = (int*)calloc(maxnum+1, sizeof(int));
cnt = (int*)calloc(MAX_NUMBER, sizeof(int));
//입력.
for(i=0; i<maxnum; i++)
{
scanf("%d", &arr[i]);
}
//counting 배열.
for(i=0; i<maxnum; i++)
{
cnt[arr[i]]++;
}
//누적합 배열.
for(i=1; i<=maxnum; i++)
{
cnt[i] += cnt[i-1];
}
//결과 배열에 저장.
for(i=0; i<maxnum; i++)
{
sort[cnt[arr[i]]] = arr[i];
cnt[arr[i]]--;
}
for(i=1; i<=maxnum; i++)
printf("%d", sort[i]);
free(arr);
free(sort);
free(cnt);
return 0;
}
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] DFS 경로찾기 (0) | 2018.10.20 |
---|---|
[알고리즘] BFS (0) | 2018.10.17 |
[알고리즘] DFS (0) | 2018.08.31 |
[알고리즘] 쿼드트리 (Quad Tree) (0) | 2018.07.31 |
[알고리즘] 퀵 정렬(Quick sort) (0) | 2018.05.14 |
댓글