基数排序

概述

基数排序(Radix Sort) 是一种非比较排序算法,按元素的各位(从最低有效位到最高有效位,或反之)依次使用稳定排序(通常是 计数排序)进行排序,时间复杂度为 ,其中 为位数, 为基数。

定义

基数排序

基数排序对 位数(每个位是 之间的值)进行排序。

算法步骤(LSD 版本,从最低有效位开始):

  1. 从最低有效位(个位)到最高有效位,依次对每一位使用稳定的排序算法(如计数排序)。
  2. 经过 趟处理后,数组即被排序。

时间复杂度 空间复杂度

核心性质

为什么必须使用稳定排序?

基数排序的关键在于:在对第 位排序时,不能破坏前 位已经排好的相对顺序。只有使用稳定排序才能保证这一点。

LSD vs MSD

  • LSD(Least Significant Digit):从最低位开始排序,实现简单,通常使用计数排序作为子程序。
  • MSD(Most Significant Digit):从最高位开始排序,需要递归处理,适用于变长关键字。

时间复杂度分析

  • 为常数且 时,基数排序的运行时间为
  • 选择计数排序作为子程序时,每趟耗时 ,共 趟。

与比较排序的关系

基数排序不受比较排序 下界的限制,可以在特定条件下实现线性时间排序。

章节扩展

第8章:线性时间排序

基数排序是第8章讨论的三种非比较排序算法之一,与计数排序和桶排序共同展示了突破比较排序下界的方法。

参见