【问题标题】:Number of Comparisons finding the median of 7 numbers [closed]比较数找到 7 个数字的中位数 [关闭]
【发布时间】:2011-05-08 10:42:43
【问题描述】:

我可以通过 12 次比较找到中位数。但我想知道最少的比较次数以及如何进行。

【问题讨论】:

  • 我想看看你的实现 - 我似乎无法在少于 18 次操作中完成。
  • 对于a,b,c,d,e,f,g,尝试a

标签: algorithm compare median minimum


【解决方案1】:

对于 (7s),当您发现飞行机器人时,您就知道自己走在了正确的轨道上(哈斯图)。有两个主要案例需要验证 10 个组合;其他情况没有接近极限。 (7s) 接近于完美的拼图,例如 E 的斑马拼图。不是太难,但足够难,只有受过训练的人才会在第一时间破解它。

现在 (4s, 3) 也有 7 个数字,等于 (7s)。在这里,我们假设其中一个数字重复了 3 次(重数为 3)。我不会告诉你答案(最佳三元 dec. 树的高度)是什么。小伙伴们快去找吧!

【讨论】:

    【解决方案2】:

    如果您允许并行比较(现代 CPU 可能会为您执行此操作),您可以使用 sorting network 分六个步骤解决问题。

    【讨论】:

    【解决方案3】:

    Donald Knuth 在计算机编程的艺术第三卷中有一章关于“最小比较选择”。

    Knuth 说,“目前还没有[在最小比较次数中进行选择] 的通用方法是显而易见的”,但他给出了一些接近最小值的通用方法。

    查看表 5.3.3-1,我们可以看到 V₄(7) = 10(也就是说,您最多可以使用 10 次比较找到 7 个项目中的第 4 大),并且算法(“由试错”)在习题 5.3.3-10 的解法中给出。

    【讨论】:

    • 看来TAoCP是必要的。 @-@
    • @zerr,毫无疑问,这总是必要的
    猜你喜欢
    • 2013-06-14
    • 2016-07-05
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多