伪代码:
COUNTING-SORT.A;B;k/
1letC[0..k] be a new array
2 for i =0 to k
3 C[i]=0
4 for j =1 to A.length
5 C [a[j] ]=C [A[J]]+ 1
6 //C[i] now contains the number of elements equal toi.
7 for i =1 to k
8 C[i]=C[i]+C[i-1]
9 //C[i] contains the number of elements less than or equal toi.
10 for j =A.length downto 1
11 B[C [A[j ]]]=A[j ]
12 C [A[j]]=C[A[j]]-1
Java实现
private static int[] sort(int[] a,int[] b,int k){
int[] c=new int[k+1];
for(int i=0;i<=k;i++){
c[i]=0;
}
for(int j=1;j<a.length;j++){
c[a[j]]=c[a[j]]+1;
}
for(int i=1;i<=k;i++){
c[i]=c[i]+c[i-1];
}
for(int j=a.length-1;j>=0;j--){
b[c[a[j]]]=a[j];
c[a[j]]=c[a[j]]-1;
}
return b;
}