【问题标题】:How many comparisons are needed in worst case if we have to sort 7 numbers each of 4 digit?如果我们必须对 4 个数字中的 7 个数字进行排序,那么在最坏的情况下需要进行多少次比较?
【发布时间】:2012-08-01 04:27:45
【问题描述】:

如果我们必须对 4 个数字中的 7 个数字进行排序,那么在最坏的情况下需要多少次比较?(基数排序) 选项是 - 40,38,47,280。

我的解决方案——我拿了 10 个桶(0 到 9)(链表)。然后对于第 i 个数字的每个数字,我将其放入 Bucket 中,对应于其数字的值。然后我将这些数字收集到数组中。对所有数字重复此过程,因此我的原始数组已排序。比较总数= 10*4=40(10,因为我遍历了所有的桶来寻找对应的桶)。

现在问题出在 Timothy J Williams 的书中,给出的比较数 = 数字数 * 数字数 * 桶数 = 4*7*10=280。我无法理解。有人可以解释一下这是怎么回事。

【问题讨论】:

  • 什么算作比较?从理论上讲,基数排序甚至不被认为是比较排序,所以答案是 0...

标签: radix-sort bucket-sort


【解决方案1】:

确实,基数排序不是基于比较的算法。这里的比较说明了迭代中涉及的比较。首先,我们需要遍历 7 个元素的数组,并将每个数字的位数保存在相应的桶中。这里为了遍历数组,我们需要 7 次比较。将所有元素放入 0-9 的桶中后,我们需要遍历 0-9 的所有桶,并根据它们的桶号排列元素,这需要 10 次比较才能遍历 0-9 的桶。现在我们必须对 7 个元素的所有 4 位重复这个过程。因此,比较总数为 7*10*4 = 280

【讨论】:

    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多