在阅读算法介绍之后,我仍然不知道为什么基数排序优先于最低有效数字。在我看来,最重要的数字首先应该与最低有效数字相同,甚至更好。因为最重要的数字首先比重量更重,它可以减少分拣时间。谁能帮忙解释一下?
答案 0 :(得分:4)
考虑具有值
的示例总体91, 19, 55, 54
如果您先通过LSD(ahem)分发,那么
91, 54, 55, 19
然后由MSD;
19, 54, 55, 91
- 好
现在先由MSD分发:
19, 55, 54, 91
然后由LSD:
91, 54, 55, 19
- 糟糕
答案 1 :(得分:0)
如果你没有在数字输入中做额外的工作,Most Significant Digit first
就不起作用。
尝试考虑数字输入集:1 2 10
现在您以下面的方式使用MSDF
(不是最不重要的数字第一种方式):
数十桶:1 10
二十桶:2
由于两个十斗只有一个项目,只需处理一个十斗
零桶:1 10
所以最终订单为1 10 2
错误!
如果您执行额外的工作以将所有数字放在相同的长度中,它将起作用:
01 02 10
01 02
10
由于十桶只有一个项目,只需处理零十桶
一桶:01
两个桶:02
所以最终订单为01 02 10
正确!
91, 19, 55, 54
中尝试MSDF
:19
55 54
九十年代桶:91
由于Tens bucket和Nineties bucket只有一个项目,只需处理五十年代桶
四桶:54
五桶:55
所以最终订单为19 54 55 91
正确!