计数排序
计数排序
基本概念
计数排序(Counting Sort)基本思想:
统计数组中每个元素出现的次数,然后根据统计信息将元素按顺序放置到正确位置,实现排序。
算法步骤:
- 确定数值范围:找出数组中的最大值和最小值,计算数值范围。
- 创建计数数组:创建一个大小为数值范围的数组,用于统计每个元素出现的次数。
- 统计元素频次:遍历原数组,统计每个元素出现的次数。
- 计算累积频次:将计数数组转换为累积频次数组,表示每个元素在排序后数组中的位置。
- 逆序填充结果:逆序遍历原数组,根据累积频次将元素放入正确位置。
内部实现:
1 | class Solution: |
复杂度分析:
| 指标 | 复杂度 | 说明 |
|---|---|---|
| 最佳时间复杂度 | n 为元素个数,k 为数值范围,无论数组状态如何,都需要统计和填充操作 | |
| 最坏时间复杂度 | 无论数组状态如何,都需要统计和填充操作 | |
| 平均时间复杂度 | 计数排序的时间复杂度与数据状态无关 | |
| 空间复杂度 | 需要额外的计数数组,大小取决于数值范围 | |
| 稳定性 | 稳定 | 逆序填充保持相等元素的相对顺序 |
| 适用场景: |
- 整数排序
- 数值范围较小(k 远小于 n)
- 对稳定性有要求的场景
计数排序是一种非比较排序算法,通过统计元素频次实现排序。它特别适合数值范围较小的整数排序。 - 优点:时间复杂度稳定,稳定排序,适合小范围整数排序
- 缺点:空间复杂度与数值范围相关,不适合大范围数值
应用场景:
- 1122[[数组的相对排序]]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 笺札!





