先看例子:
/* 桶排序 */
#include <stdio.h>
#define N 10
void sort(int arr[],int n)
{
int temp[N+1]={0};
int i,j;
for(i=0;i<n;i++)
{
temp[arr[i]]++;
}
j=0;
for(i=0;i<N+1;i++)
{
while(0!=temp[i])
{
arr[j++]=i;
temp[i]--;
}
}
}
int main()
{
int i;
int arr[10]={2,3,1,9,7,0,5,4,0,2};
sort(arr,10);
for(i=0;i<10;i++)
printf("%d\t",arr[i]);
return 0;
}
//输出:
0 0 1 2 2 3 4 5 7 9
优点:
排序快速,时间复杂度是
O(n)
缺点:
对待排序的数有要求(大小不超过N的正整数),如果N太大,则内存会占用很多