Python全系列 教程
3567个小节阅读:5929.6k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中
xxxxxxxxxx
def count_sort(arr):
# 如果数组长度小于 2 则直接返回
if len(arr) < 2:
return arr
# 获取数组中最小值
min_num = min(arr)
# 获取数组中最大值
max_num = max(arr)
count = max_num - min_num
# 开辟一个计数列表(长度为取值范围)
count_list = [0 for _ in range(count+1)]
# 循环操作下标位置数+1(等于是记录每个数在数组中出现了多少次)
for val in arr:
index = val-min_num
count_list[index] += 1
# 原数组清空,留待下面重新插入
arr.clear()
# 遍历计数列表中的值和下标(值的数量),
# 从0开始,所以最终是从小到大排序
for ind, val in enumerate(count_list):
# 下面按照值中的数量进行循环
for i in range(val):
# 有多少,则会追加多少次
arr.append(ind+min_num)
return arr
if __name__ == "__main__":
print('----------- 排序前数组内容 -----------------')
arr = [2, 3, 8, 7, 1, 2, 3, 2, 7, 3, 9, 8, 2, 1, 6, 2, 4, 6, 9, 2]
print(arr)
count_sort(arr)
print('------------ 排序后的结果 ------------------')
print(arr)