排序算法——基数排序简介

基数排序

基数排序也是一种稳定排序算法,且一般计数排序被用在基数排序过程中。
基数排序包括 LSD(Least significant digital)MSD(Least significant digital) 两大类。

LSD 基数排序的思想非常直观:假设一个数组的最高位有 d d d 位,那么依次从低位向高位处理,先排好个位,然后在排好个位的基础上排十位,以此类推,直到遍历完最高位次,排序结束。每一次都使用一种稳定排序算法对该数组进行排序。

在这里插入图片描述

上图表示一个由 7 个 3 位数组成的列表的基数排序。最左边的一列是输入数据,其余各列显示了由低到高位连续进行排序后列表的情况。阴影指出了进行排序的位。

引理:给定 n n n 个最高位为 d d d 的数,其中每一个数位有 k k k 个可能的取值。如果基数排序使用的稳定排序方法耗时 O ( n + k ) O(n + k) O(n+k),那么它就可以在 O ( d ( n + k ) ) O(d(n+k)) O(d(n+k)) 时间内将这些数排序。

在下面的代码中,我们假设 n n n d d d 位的元素存放在数组 A A A 中,其中第一位是最低位,第 d d d 位是最高位。

Radix-Sort(A, d) {
    for i=1 to d
        use a stable sort to sort array A on digit i
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值