计数排序

前言

大部分的排序算法都是基于数值大小比较来进行排序的,那还有其他方式进行排序吗?计数排序就是其中一种。计数排序通过数组下标来确定元素的位置。

举例

有以下数组待排序:
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

可以看到这个数组已经是有序的了。

你可能感兴趣的:(计数排序)