多关键字排序

本文介绍了多关键字排序的最高位优先和最低位优先方法,重点讲解了链式基数排序的思想、过程和算法实现,包括关键字的位数、基数,以及排序过程中涉及的分配和收集步骤。通过示例展示了排序过程,并分析了链式基数排序的时间复杂度和空间复杂度。
摘要由CSDN通过智能技术生成
 

设有n个记录{R1, R2, …,Rn},每个记录Ri的关键字是由若干项(数据项)组成,即记录Ri的关键字Key是若干项的集合: {Ki1, Ki2, …,Kid}(d>1) 。记录{R1, R2, …,Rn}有序的,指的是"i, j∈[1,n],i<j ,若记录的关键字满足:

{Ki1, Ki2, …Kid}<{Kj1, Kj2, …Kjd},即Kip ≤Kjp (p=1, 2, … d)        

 

多关键字排序思想

先按第一个关键字K1进行排序,将记录序列分成若干个子序列,每个子序列有相同的K1值;然后分别对每个子序列按第二个关键字K2进行排序,每个子序列又被分成若干个更小的子序列;如此重复,直到按最后一个关键字Kd进行排序。

最后,将所有的子序列依次联接成一个有序的记录序列,该方法称为最高位优先(Most Significant Digit first)。

另一种方法正好相反,排序的顺序是从最低位开始,称为最低位优先(Least Significant Digit first)。

 

链式基数排序

若记录的关键字由若干确定的部分(又称为 “位”)组成,每一位(部分)都有确定数目的取值。对这样的记录序列排序的有效方法是基数排序。

设有n个待排序记录{R1, R2, …,Rn}, (单)关键字是由d位(部分)组成,每位有r种取值,则关键字R[i].key可以看成一个d元组: R[i].key={Ki1, Ki2, …,Kid} 。

基数排序可以采用前面介绍的MSD或LSD方法。以下以LSD方法讨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值