【发布时间】:2011-05-08 10:42:43
【问题描述】:
我可以通过 12 次比较找到中位数。但我想知道最少的比较次数以及如何进行。
【问题讨论】:
-
我想看看你的实现 - 我似乎无法在少于 18 次操作中完成。
-
对于a,b,c,d,e,f,g,尝试a
标签: algorithm compare median minimum
我可以通过 12 次比较找到中位数。但我想知道最少的比较次数以及如何进行。
【问题讨论】:
标签: algorithm compare median minimum
对于 (7s),当您发现飞行机器人时,您就知道自己走在了正确的轨道上(哈斯图)。有两个主要案例需要验证 10 个组合;其他情况没有接近极限。 (7s) 接近于完美的拼图,例如 E 的斑马拼图。不是太难,但足够难,只有受过训练的人才会在第一时间破解它。
现在 (4s, 3) 也有 7 个数字,等于 (7s)。在这里,我们假设其中一个数字重复了 3 次(重数为 3)。我不会告诉你答案(最佳三元 dec. 树的高度)是什么。小伙伴们快去找吧!
【讨论】:
如果您允许并行比较(现代 CPU 可能会为您执行此操作),您可以使用 sorting network 分六个步骤解决问题。
【讨论】:
Donald Knuth 在计算机编程的艺术第三卷中有一章关于“最小比较选择”。
Knuth 说,“目前还没有[在最小比较次数中进行选择] 的通用方法是显而易见的”,但他给出了一些接近最小值的通用方法。
查看表 5.3.3-1,我们可以看到 V₄(7) = 10(也就是说,您最多可以使用 10 次比较找到 7 个项目中的第 4 大),并且算法(“由试错”)在习题 5.3.3-10 的解法中给出。
【讨论】: