《算法导论》第8章计数排序
/**
* 计数排序
*/
#include <bits/stdc++.h>
using namespace std;
void countingSort(int A[], int Alen, int B[], int k){
int C[k+1];
memset(C,0,sizeof(C));
for (int i = 1; i <= Alen; ++i)
{
C[A[i]] = C[A[i]]+1;
}
for (int i = 1; i <= k; ++i)
{
C[i] = C[i] + C[i-1];
}
for (int j = Alen; j >= 1; --j)
{
B[C[A[j]]] = A[j];
C[A[j]]=C[A[j]] - 1;
}
}
int main(){
int a[] = {0,2,4,5,6,7,9,8,1,10,3};
int len = sizeof(a)/ sizeof(a[0]) -1;
int b[len+1];
memset(b, 0, sizeof(b));
countingSort(a, len, b, 15);
for (int i = 1; i <= len; ++i) {
cout<<b[i]<<" ";
}
cout<<endl;
return 0;
}