算法过程分析:
""" 计数排序说明: 前提:已经明确值的范围 1、构建一个值范围的字典/列表 2、遍历列表,将不同的值 记录到 字典/列表 中对应的位置 3、遍历完成后,对字典/列表 逐个打印输出 note:排序执行时间最短;但需要额外的一个min~max的存储空间 """
代码实现:
# -*- coding: utf-8 -*
# 开发人员:charles
# 开发时间:2022/5/23 12:17
# 文件名称:count_sort.py
"""
计数排序说明:
前提:已经明确值的范围
1、构建一个值范围的字典/列表
2、遍历列表,将不同的值 记录到 字典/列表 中对应的位置
3、遍历完成后,对字典/列表 逐个打印输出
note:排序执行时间最短;但需要额外的一个min~max的存储空间
"""
def count_sort(li, min, max):
count_list = [0 for _ in range(min, max + 1)] # 创建一个规定范围的列表
for index, value in enumerate(li): # 遍历list,将不同值计数到对应的索引中
count_list[value - min] += 1 # 将value 通过减去min映射到对应的列表位置
li.clear() # 清空原来的list
# 重新给list赋值
for index, value in enumerate(count_list):
for i in range(value):
li.append(index + min) # 将value 通过加上count_length映射回来,并添加到list中
import random
li = [random.randint(5, 20) for _ in range(100)]
print(li)
count_sort(li, 5, 20)
print(li)