📅  最后修改于: 2023-12-03 15:11:17.999000             🧑  作者: Mango
计数排序(Counting Sort)是一种非比较排序算法,它的主要思想是统计一个序列中每个元素出现的次数,然后根据出现次数把元素从小到大排序。
计数排序的时间复杂度为 O(n+k),其中 n 是一个序列的元素个数,k 是序列中元素的取值范围。
下面是一个用 Python 实现的计数排序程序。
def counting_sort(nums):
if not nums:
return []
# 获取数列中最大值和最小值
max_num, min_num = max(nums), min(nums)
# 初始化计数数组,长度为 max_num - min_num + 1
count = [0] * (max_num - min_num + 1)
# 统计每个元素在数列中出现的次数
for num in nums:
count[num - min_num] += 1
# 对计数数组进行累加,得到每个元素在排序结果中的位置
for i in range(1, len(count)):
count[i] += count[i - 1]
# 初始化结果数组
res = [0] * len(nums)
# 遍历数列,根据每个元素在计数数组中的位置将其放到结果数组中
for num in nums:
index = count[num - min_num] - 1
res[index] = num
count[num - min_num] -= 1
return res
>>> nums = [3, 4, 2, 1, 5]
>>> counting_sort(nums)
[1, 2, 3, 4, 5]
以上是一个简单的计数排序程序,可以帮助你更好的理解计数排序算法的实现原理。