/*
算法将整数数组
a[1,...,a[n]]
排序,每个整数的范围在0到m,包括0和m。
*/
InputParameters:a,m
OutputParameter:a
counting_sort(a,m){
//设置c[k]=数组a中值k出现的次数。
//开始将c初始换为0。
for k = 0 to m
c[k] = 0
n = a.last
for i = 1 to n
c[a[i]] = c[a[i]]+1
//修改c,使c[k]小于等于k的元素个数
for k = 1 to m
c[k] = c[k] + c[k-1]
//用b中的结果对a排序
for i = n downto 1{
b[c[a[i]]] = a[i]
c[a[i]]=c[a[i]]-1
}
//将b复制回a
for i =1 to n
a[i]=b[i]
}
/*
基数排序
算法将整数数组
a[1,...,a[n]]
排序,每个整数最多k位。
*/
InputParameters: a,k
OutputParameter:a
radix_sort(a,k){
for i = 0 to k-1
counting_sort(a,10^i) //键值是10^i位处的数字
}