假定给定的一串正数,且最大值已知,可以使用这种排序。 #include<iostream> using namespace std; const int N=10; void countsort(int *a,int len) { int count[256]={0};//假设最大值为256,这个数组用来标记每个数出现的次数 for(int i=0;i<len;i++) count[a[i]]++; int *temp=new int[len]; memset(temp,0,len*sizeof(int)); for(i=1;i<256;i++) count[i]+=count[i-1]; for(i=0;i<len;i++) { temp[count[a[i]]-1]=a[i]; --count[a[i]]; } memcpy(a,temp,len*sizeof(int)); delete []temp; } int main() { int p[N]={1,5,6,2,2,3,8,9,10,100}; countsort(p,N); for(int i=0;i<N;i++) cout<<p[i]<<" "; cout<<endl; return 0; }