基数排序原理

一 点睛

基数排序(radix sort) 是桶排序的扩展,是一种多关键字排序算法。若记录按昭多个关键字排序,则依次按照这些关键字进行排序。例如进行扑克牌排序,扑克牌由面值和花色两个关键字组成,则可以先按照面值(2、3、…、10、J、Q、K、A) 排序,再按照花色排序。若记录按照一个数值型的关键字排序,则可以把该关键字看作由 d 位组成的多关键字排序,每一位的值取值范围都为[ 0, r) ,其中 r 叫作基数。十进制数 268 由3位数组成,每一位的取值范围都为[ 0,10) ,十进制数的基数 r 为 10,同样,二进制数的基数为 2 ,英文字母的基数为 26。以十进制数的基数排序为例进行说明。

二 算法步骤

1 求出待排序序列中最大关键字的位数 d,然后从低位到高位进行基数排序。

2 按个位将关键字依次分配到桶中,然后将每个桶中的数据都依次收集起来。

3 按十位将关键字依次分配到桶中,然后将每个桶中的数据都依次收集起来。

4  依次进行下去,直到 d 位处理完毕,得到一个有序的序列。

三 图解

对有 10 个学生的成绩序列(68,75,54,70,83,48,80,12,75*,92)进行基数排序。

1 待排序序列中的最大关键字 92 为两位数,只需进行两趟基数排序即可。

2 分配。首先按照学生成绩的个位数划分 10 个桶(0〜9) ,将学生成绩依次放入桶中,将个位是 0 的放入 0 号桶中,将个位是 2 的放入 2 号桶中,等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值