计数排序
概述
计数排序(Counting Sort) 是一种非比较排序算法,假设输入的 个元素都是 到 之间的整数,通过计数每个值出现的次数来确定元素位置,时间复杂度为 ,且是稳定的排序算法。
定义
计数排序
计数排序假设输入数组 中每个元素是 到 之间的整数。
算法步骤:
- 初始化计数数组 为全零。
- 遍历 ,统计每个值出现的次数存入 。
- 对 做前缀和,使得 等于 的元素个数。
- 从后向前遍历 ,利用 确定每个元素在输出数组 中的位置,并将 中对应值减 1。
时间复杂度: 空间复杂度:(需要输出数组和计数数组)
核心性质
稳定性
计数排序是稳定的排序算法。从后向前遍历输入数组保证了相等元素的相对顺序不变。这一性质使得计数排序可以作为 基数排序 的子程序。
适用条件
- 输入元素必须是整数(或可以映射为整数)。
- 当 时,计数排序的运行时间为 ,非常高效。
- 当 时,计数排序效率较低,不适合使用。
非比较排序
计数排序不通过元素间的比较来确定顺序,因此不受 比较排序 的 下界限制。
章节扩展
第8章:基数排序
计数排序是基数排序中按位排序的子程序,基数排序利用计数排序的稳定性来实现多关键字排序。