所需的最小比较次数

时间:2012-03-13 21:38:58

标签: algorithm comparison

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

编辑说明

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

4 个答案:

答案 0 :(得分:6)

最少4个元素。比较次数为3次。

通常,要查找最大的N元素,您需要进行N-1次比较。这为您提供4个5个数字,而不是6个。

<强>证明:

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

  2. 不能有更短的解决方案,因为此解决方案无法比较所有元素。

  3. QED。

答案 1 :(得分:4)

我知道它没有回答原来的问题,但我很高兴在the minimum number of comparisons needed to find the smallest AND the largest number from an unsorted array上阅读这篇不那么直观的文章(附证明)。

答案 2 :(得分:2)

将其视为竞赛。通过比较两个元素,你可以获得更宽松和胜利。

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

答案 3 :(得分:-1)

表示元素a,b,c,d

如果a> b + c + d,那么只需要一次比较即可知道a是最大的。

你必须要幸运。