基数排序属于"分配式排序",又称"桶子法",它是一种借助多关键字的思想对单逻辑关键字进行排序的算法。
基数排序有两种方法:
1.最高位优先(Most Significant Digit first)法,简称MSD法:先按k1排序分组,同一组中记录,关键码k1相等,再对各组按k2排序分成子组,之后,对后面的关键码继续这样的排序分组,直到按最次位关键码kd对各子组排序后。再将各组连接起来,便得到一个有序序列。
2.最低位优先(Least Significant Digit first)法,简称LSD法:先从kd开始排序,再对kd-1进行排序,依次重复,直到对k1排序后便得到一个有序序列。
因为LSD更符合大家的思维方式,下面我以LSD为例讲解:
假设初始序列为:Array{3,1,13,24,36,23,21,44,25,19}
任何一个整数各个位上的基数都可以0~9来表示,我们不妨把0~9视为10个桶。
我们先根据序列的个位数的数字来进行分类,将其分到指定的桶中。例如:Array[0] = 3,个位数上是3,将这个数存入编号为3的桶中。
[0] |