计数排序的详细解释请看维基百科http://zh.wikipedia.org/zh-cn/%E8%AE%A1%E6%95%B0%E6%8E%92%E5%BA%8F
void CountSort(int *arr,int n,int *sorted_arr)
{
int i;
int *count_arr=new int[100];
for (i=0;i<100;i++)
count_arr[i]=0;
for(i=0;i<n;i++)
count_arr[arr[i]]++;
for (i=1;i<100;i++)
count_arr[i]+=count_arr[i-1];
for (i=n-1;i>=0;i--)
{
sorted_arr[count_arr[arr[i]]-1]=arr[i];
count_arr[arr[i]]--;
}
delete [] count_arr;
}
void main()
{
int j;
int a[]={20,52,65,10,89,99,25,14,8,45,62,10,20,79,52};
int *temp=new int[15];
CountSort(a,15,temp);
for (j=1;j<15;j++)
cout<<temp[j]<<' ';
cout<<endl;
delete [] temp;
}
排序结果如下