什么是计数排序
通过一个长度为最大值与最小值之差的数组,遍历无序的数列,在对应的下标中记录出现的次数。最后在遍历生成的数组,输出数组元素的下标值,元素的值是几,就输出多少次。
- 适用性:一定范围内的整数排序,且取值范围不大的情况下
- 用空间还时间,时间复杂度:O<=O(nlogn)
def count_sort(array=[]):
# 1.得到数列的最大值
max_value = array[0]
for i in range(1,len(array)):
if array[i] > max_value:
max_value = array[i]
# 2.根据数列的最大值确定统计数组的长度
# 长度为max_value+1是用以保证数组的最后一个下标是max_value
count_array = [0] * (max_value + 1)
# 3.遍历数列,填充统计数组
for i in range(0, len(array)):
count_array[array[i]] += 1
# 4.遍历统计数组,输出结果
sorted_array = []
for i in range(0, len(count_array)):
for j in range(0, count_array[i]):
sorted_array.append(i)
return sorted_array
my_array = list([4, 4, 5, 8, 6, 7, 6, 1, 3, 8, 9])
print(count_sort(my_array))