#include<stdio.h> #include<stdlib.h> #define len 10 void CountingSort(int* A,int A_Len,int * B,int k); int main() { int A[10]={1,5,9,0,7,8,6,4,3,2}; int* B=(int*)malloc(sizeof(int)*len); CountingSort(A,len,B,9); for(int i=0;i<len;i++) { printf("%d ",B[i]); } return 0; } void CountingSort(int* A,int A_Len,int * B,int k) { int* C=(int*)malloc(sizeof(int)*(k+1)); int i,j; //初始化C数组全部为0 for(i=0;i<k+1;i++) { C[i]=0; } //开始计数 for(j=0;j<A_Len;j++) { C[A[j]]=C[A[j]]+1; } //累加 for(i=1;i<k+1;i++) { C[i]=C[i-1]+C[i]; } //输出 for(i=A_Len-1;i>=0;i--) { B[C[A[i]]-1]=A[i]; C[A[i]]=C[A[i]]-1; } }