编辑代码

#include <iostream>
using namespace std;
void CountSort(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=new int [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 = new int[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;
}
void printArray(int a[], int len) {
    for (int i = 0; i <len; ++i) {
        cout << a[i] << " ";
    }
    cout << endl;
}
int main() {
    int a[] = {2,5,3,0,2,3,0,3};
    int len = sizeof(a)/sizeof(int);
    CountSort(a, len);
    cout<<"排序后数组:"<<endl;
    printArray(a, len);

	return 0;
}