编辑代码

#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;
#define N 10
#define M 100

void print(int *a)
{
    for(int i=0; i<N; ++i)
    {
        printf("%3d", a[i]);
    }
    printf("\n");
}
void countSort(int *a)
{
    int count[M] = {0};
    for(int i=0; i<N; ++i)
    {
        //根据待排的元素值,找到它在count数组中的位置
        //增加它的统计量
        ++count[a[i]];
    }
    //i用来遍历count数组
    //k用来重新找a数组
    for(int i=0,k=0; i<M; ++i)
    {
        for(int j=0; j<count[i]; ++j)
        {
            //j用来循环放回
            a[k] = i;
            ++k;
        }
    }
}
int main() {
    srand(time(NULL));
    int *a = (int*)malloc(sizeof(int) * N);
    for(int i=0; i<N; ++i)
    {
        a[i] = rand() % M;
    }

    print(a);

    countSort(a);

    print(a);

    free(a);
    a = NULL;
	return 0;
}