为什么基数排序优先于最低有效数字

时间:2014-03-21 09:31:53

标签: algorithm

在阅读算法介绍之后,我仍然不知道为什么基数排序优先于最低有效数字。在我看来,最重要的数字首先应该与最低有效数字相同,甚至更好。因为最重要的数字首先比重量更重,它可以减少分拣时间。谁能帮忙解释一下?

2 个答案:

答案 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. 数十桶:1 10
    二十桶:2

  2. 由于两个十斗只有一个项目,只需处理一个十斗 零桶:1 10

  3. 所以最终订单为1 10 2 错误!

  4. 但是

    如果您执行额外的工作以将所有数字放在相同的长度中,它将起作用:

    1. 将输入调整为相同的长度01 02 10
    2. 零十桶:01 02
      数十桶:10
    3. 由于十桶只有一个项目,只需处理零十桶 一桶:01
      两个桶:02

    4. 所以最终订单为01 02 10 正确!

    5. 91, 19, 55, 54中尝试MSDF

      1. 所有号码的长度相同
      2. 数十桶:19
        五十年代桶:55 54 九十年代桶:91
      3. 由于Tens bucket和Nineties bucket只有一个项目,只需处理五十年代桶 四桶:54
        五桶:55

      4. 所以最终订单为19 54 55 91 正确!