计数排序(Counting sort)是一种稳定的线性时间排序算法(时间复杂度为O(n)),适用于小范围集合的排序。计数排序使用一个额外的数组,其中第i个元素是待排序数组
中值等于
的元素的个数。然后根据数组
来将
中的元素排到正确的位置。计数排序不是比较排序,排序的速度快于任何比较排序算法。但是由于需要借助数组C来计数,因此空间复杂度要大一些。该算法不适用于范围较大的数列的排序。
例子:
假设要排序的数组为 A = {1,0,3,1,0,1,1}
这里最大值为3,最小值为0,那么我们创建一个数组C,长度为4.
然后一趟扫描数组A,得到A中各个元素的总数,并保持到数组C的对应单元中。
比如0 的出现次数为2次,则 C[0] = 2;1 的出现次数为4次,则C[1] = 4