计数排序
学习基数排序之前首先学习计数排序。
计数排序假设每个元素都是在0到k之间的一个整数。
基数排序的基本思想,对于每个元素x,如果我们知道了小于x的元素的个数,就可以确定输出数组中元素x的位置,那么直接将元素x放到输出数组中。比如有3小于x的元素,那在输出数组中,x肯定位于第4个位置。
计数排序的算法用伪代码描述为:
COUNTING-SORT(A,k)
// 初始化数组C
for i=0 to k
C[i]=0
// 统计A[j]元素出现的次数,保存到C数组中
for j=0 to A.length
C[A[j]]=C[A[j]]+1
// 统计小于等于A[j]元素的个数
for k=0 to k
C[K]=C[K-1]+C[K]
// 将A中的元素放在B中正确的位置
for i=A.length to 0
B[C[A[i]]-1]=A[i]
C[A[i]]=C[A[i]]-1
注:由于有可能有相同元素存在,所以,每次将A[i]元素放入B数组中,都要将C[A[j]]的