【问题标题】:minimum number of comparisons needed所需的最少比较次数
【发布时间】:2012-03-30 08:36:42
【问题描述】:

从 4 个不同元素中找到最大元素所需的最少比较次数是多少?我知道 5 个不同的数字是 6, floor(5/2) * 3;这是来自 clrs 的书。但我知道没有一个通用的公式可以找到这个,或者有吗?

编辑说明

这 4 个元素可以是任何不同的顺序(对于这 4 个元素的所有排列)我对在遍历元素时跟踪最大元素的计数技术不感兴趣,但比较像 > 或

【问题讨论】:

    标签: algorithm comparison


    【解决方案1】:

    我知道它没有回答最初的问题,但我喜欢阅读 the minimum number of comparisons needed to find the smallest AND the largest number from an unsorted array 上这篇不太直观的帖子(附有证据)。

    【讨论】:

      【解决方案2】:

      对于元素 a、b、c、d

      如果a>b+c+d,那么只需要比较一下就知道a最大了。

      不过,你必须要走运。

      【讨论】:

        【解决方案3】:

        把它想象成一场比赛。通过比较两个元素,您有一个较松和一个赢家。

        因此,如果您有 n 元素并需要 1 个最终获胜者,则需要进行 n-1 比较以排除其他元素。

        【讨论】:

        • 请看上面的cmets
        【解决方案4】:

        对于 4 个元素,最小。比较次数为 3。

        一般来说,要找到最大的N 元素,您需要进行N-1 比较。这给你 4 对 5 个数字,而不是 6。

        证明:

        1. N-1 比较总是有解决方案:只需比较前两个,然后选择较大的并与下一个比较,选择较大的并与下一个比较等等......

        2. 不可能有更短的解决方案,因为该解决方案不会比较所有元素。

        QED。

        【讨论】:

        • 证明的第二部分相当草率。检查我的答案,因为这部分很容易证明。
        • Karoly,您在当前答案中没有证明任何内容,您只是陈述了要证明的定理。我展示的是用于信息学的典型且明确的证据。
        • 实际上,使用决策树,5 个元素需要 6 个元素,但我的直觉和你一样
        • @Tomas:不,不是。为什么不比较所有元素?证据在哪里? (是的,我的回答并不完整,但如果你仔细观察,你会发现我没有在其中放置 proof 这个词)
        • @David,“5 个元素需要 6 个使用决策树”......如果这是真的,那么这意味着决策树不是一个好的工具这个任务。 4次比较就够了,见我证明的第1点。
        猜你喜欢
        • 2020-02-12
        • 2010-12-07
        • 2020-07-29
        • 1970-01-01
        • 2016-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多