#include <iostream> #include <memory.h> #include <stdio.h> #include <stdlib.h> #include <time.h> // 输出数组元素 void printArr(int* arr, int len) { for (int i = 0; i < len; i++) { printf("%d ", *(arr+i)); } } // 随机生成数组数据 void randArr(int* arr, int len, int maxVal) { srand((int)time(0)); for (int i = 0; i < len; i++) { *(arr+i) = rand() % maxVal; } } // srcArr, 待排序的数组 // dstArr, 排好序的数组 // len, 数组大小 // k, srcArr[0...len-1]的最大数 void CountSort(int* srcArr, int* dstArr, int len, int k) { int i = 0; int j = 0; // auxArr, 辅助存储空间 // auxArr[i]中存放的是值小于或者等于i的元素个数 int* auxArr = new int[k+1]; // set auxArr[0...k] to 0 memset(auxArr, 0, sizeof(int)*(k+1)); for (j = 0; j < len; j++) { // 此时auxArr[i]中存放的是值为i的元素个数 ++auxArr[srcArr[j]]; } for (i = 1; i <=k; i+&