📜  用于计数排序的Python程序(1)

📅  最后修改于: 2023-12-03 15:11:17.999000             🧑  作者: Mango

用于计数排序的Python程序

计数排序(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]

以上是一个简单的计数排序程序,可以帮助你更好的理解计数排序算法的实现原理。