计数排序

概述

计数排序(Counting Sort) 是一种非比较排序算法,假设输入的 个元素都是 之间的整数,通过计数每个值出现的次数来确定元素位置,时间复杂度为 ,且是稳定的排序算法。

定义

计数排序

计数排序假设输入数组 中每个元素是 之间的整数。

算法步骤

  1. 初始化计数数组 为全零。
  2. 遍历 ,统计每个值出现的次数存入
  3. 做前缀和,使得 等于 的元素个数。
  4. 从后向前遍历 ,利用 确定每个元素在输出数组 中的位置,并将 中对应值减 1。

时间复杂度 空间复杂度(需要输出数组和计数数组)

核心性质

稳定性

计数排序是稳定的排序算法。从后向前遍历输入数组保证了相等元素的相对顺序不变。这一性质使得计数排序可以作为 基数排序 的子程序。

适用条件

  • 输入元素必须是整数(或可以映射为整数)。
  • 时,计数排序的运行时间为 ,非常高效。
  • 时,计数排序效率较低,不适合使用。

非比较排序

计数排序不通过元素间的比较来确定顺序,因此不受 比较排序 下界限制。

章节扩展

第8章:基数排序

计数排序是基数排序中按位排序的子程序,基数排序利用计数排序的稳定性来实现多关键字排序。

参见