前言
大部分的排序算法都是基于数值大小比较来进行排序的,那还有其他方式进行排序吗?计数排序就是其中一种。计数排序通过数组下标来确定元素的位置。
举例
有以下数组待排序:
9,3,5,4,9,1,2,7,8,1,3,6,5,3,4,0,10,9 ,7,9
观察发现大小都在 0-10 这个范围。
那么我们可以对每个数字的出现次数做统计,初始化如下:
image.png
由于第一个数字是 9 ,于是在数字下标为 9 的元素 +1.
image.png第二个整数是 3,那么数组下标为 3 的元素加 1:
image最终,数列遍历完毕时,数组的状态如下:
image有了这个 “统计结果”,排序就很简单了。直接遍历数组,输出数组元素的下标值,元素的值是几,就输出几次:
0,1,1,2,3,3,3,4,4,5,5,6,7,7,8,9,9,9,9,10
可以看到这个数组已经是有序的了。
网友评论