#include<iostream>usingnamespacestd;
voidCountSort(int a[], size_t len){
int max = a[0];
int min = a[0];
for (int i = 1; i < len; i++){
if (a[i] > max)
max = a[i];
if (a[i] < min)
min = a[i];
}
int *p=newint [max-min+1]();
for(size_t j=0;j<len;j++)
{
++p[a[j]-min];
}
for (size_t k = 1; k < (max - min + 1); ++k)
{
p[k] += p[k-1];
}
int *temp = newint[len]();
for (int l = len - 1; l >= 0; --l)
{
temp[--p[a[l] - min]] = a[l];
}
for (size_t m = 0; m <len; ++m)
{
a[m] = temp[m];
}
delete []temp;
delete []p;
}
voidprintArray(int a[], int len){
for (int i = 0; i <len; ++i) {
cout << a[i] << " ";
}
cout << endl;
}
intmain(){
int a[] = {2,5,3,0,2,3,0,3};
int len = sizeof(a)/sizeof(int);
CountSort(a, len);
cout<<"排序后数组:"<<endl;
printArray(a, len);
return0;
}