|
10.6.2 基数排序的两种实现方法
有的逻辑关键字可以看成由若干个关键字复合而成的。例如,若逻辑关键字k是数值,且其值都在0到999的范围内,则可把k中的每一个十进数字看成一个关键字,即认为k由三个关键字(K0,K1,K2)
组成,其中K0是百位数,K1是十位数,K2是个位数;又若关键字k是由五个字母组成的单词,则可看成是由五个关键字(K0,K1,K2,K3,K4)
组成,其中每个字母Kj都是一个关键字,K0是最高位,K4是最低位。现依照"LSD法"进行排序,并且由于如此分解而得的每个关键字Kj都在相同的范围内,则可以按"分配"和"收集"的方法进行。
一般情况下,假设记录的逻辑关键字由 d 个"关键字"构成,每个关键字可能取 rd 个值,则只要从最低位关键字起,按关键字的不同值将记录"分配"到
rd 个队列之后再"收集"在一起,如此重复 d 趟,最终完成整个记录序列的排序。按这种方法实现的排序称为"基数排序",其中"基数"即
rd 指的是"关键字"的取值范围,上述两种关键字的基数分别为"10"和"26"。
|
|
基数排序是一种借助"多关键字排序"的思想来实现"单逻辑关键字排序"的内部排序算法。 |
|