【C++ 程序】 基数排序

特征

基数排序(radix sort)是一种以计数排序为基础的排序方式,仅适用于整数排序,但是,速度会比快速排序(quicksort)快很多,在数量较多,所排数范围不广的情况下更具优势。
此处基数排序包括 LSD 和 MSD 两种。

程序 & 输出示例

详见我的博客 【SEU程序设计课笔记】 12 - 2020/11/19 - Write C++ programs - 排序

分析

  • 原理:桶排序。先排好一部分再在这基础上排一部分(LSD),或者排最大的桶,里面的再排,不断递归(MSD)。
  • LSD_sortMSD_sort都是一位一位排的,思路比较清晰,一个从末位向首位开始排,一个是首位向末位排。
  • 不必拘泥于一位一位排的思路,推广一下,把桶的数量变成二的方幂,运用>>(右移位)和&(与)运算可以提高效率。
  • 其中函数LSD_sort_pro_heap1LSD_sort_pro_heap2运用了动态数组(区别是:1中长度一开始是32,后来长度不够后每次长度乘二;2中长度直接定位总数的长度)
  • 代码中有较为详细的注释。

ALL RIGHTS RESERVED © 2020 Teddy van Jerry
欢迎转载,转载请注明出处。


See also

Teddy van Jerry 的导航页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值