计数排序的的动画如图所示:
第一步:我们首先需要找到需要排序的列表最大数和最小数
第二步:根据求出来的最大数与最小数计算出中间数组的长度
计算公式:len=max-min+1
求出长度后我们还需要知道偏移量为多少:偏移量=min
第三步:创建中间列表s1,长度为len
第四步:将原列表的数取出并进行计数
i表示为中间从0开始到中间列表最大长度的数值
i-min表示取出的原列表数值减掉偏移量而产生的下标,
s[i-min]+=1整体式子表示在i-min的元素数量加一
第五步:创建排序列表,并将中间列表中的数值取出
s2 = [0]*z表示排序列表,长度跟排序前列表长度相同并将元素值全部赋为0
x表示排序列表的下标,未开始之前赋值为0
创建循环将中间列表值取出并放到排序列表中去
for i in range(0,len)遍历整个中间列表
for j in range(0,s[i])内层循环表示取出元素次数,当s[i]为0时跳出内层循环,继续进行遍历中间列表,如果不为0,则进行s2[x] = i + min,x+=1的步骤,具体操作观看注释。
每个步骤的显示结果如下: