📜  计数排序(1)

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

计数排序介绍

计数排序是一种非比较排序算法,它的核心思想是统计每个元素出现的次数,然后根据元素出现的次数计算元素的位置,最终得到排好序的数组。

计数排序适用于排序一定范围内的整数,比如排序一组年龄数据。

算法实现

计数排序的实现步骤如下:

  1. 统计每个元素出现的次数,存储在计数数组中。
  2. 对计数数组进行累加,得到每个元素在排好序后的数组中的位置。
  3. 遍历原始数组,根据计数数组中对应元素的位置,将元素放到排好序的数组中。
  4. 返回排好序的数组。

计数排序的时间复杂度为 O(n+k),其中 n 为原始数组的长度,k 为元素的取值范围。

代码示例

下面是使用 Python 实现的计数排序的代码示例:

def counting_sort(arr):
    # 统计每个元素出现的次数
    count = [0] * (max(arr) + 1)
    for i in arr:
        count[i] += 1

    # 计算元素的位置
    for i in range(1, len(count)):
        count[i] += count[i - 1]

    # 排序
    result = [0] * len(arr)
    for i in range(len(arr) - 1, -1, -1):
        index = count[arr[i]] - 1
        result[index] = arr[i]
        count[arr[i]] -= 1

    return result
总结

计数排序虽然时间复杂度较低,但是它只适用于排序一定范围内的整数。并且每个元素出现的次数需要使用额外的空间存储,如果元素取值范围较大,则需要使用大量空间,不适合排序大规模数据。