计数排序是一种非比较排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 08计数排序.mp4原始序列:5,3,5,8,2,10

首先我们需要申请一个大小为11的数组int a[11]。编号从a[0]~a[10]。刚开始的时候,我们将a[0]~a[10]都初始化为0。
image.png
下面开始处理每一个数,第一个数是5,我们就将相对应的a[5]的值在原来的基础增加1,即将a[5]的值从0改为1,表示5出现了一次。
image.png
第二个数是3,我们就把相对应的a[3]的值在原来的基础上增加1,即将a[3]的值从0改为1,表示3出现了一次。
image.png
注意啦!第三个数也是5,所以a[5]的值需要在此基础上再增加1,即将a[5]的值从1改为2,表示5出现了两次。
image.png
最终数组中的内容如下:
image.png
下标为2的位置,值为1,就输出1个2,
下标为3的位置,值为1,就输出1个3 ,
下标为5的位置,值为2,就输出2个5,
下标为8的位置,值为1,就输出1个8,
下标为10的位置,值为1,就输出1个10。

代码实现