从4个不同元素中找到最大元素所需的最小比较次数是多少?我知道5个不同的数字是6,floor(5/2)* 3;这是来自clrs书。但是我知道找到这个没有一个通用公式,或者在那里?
编辑说明
这4个元素可以是任何不同的顺序(对于这4个元素的所有排列)我对计数技术不感兴趣,以便在遍历元素时跟踪最大元素,但比较如>或者<。
答案 0 :(得分:6)
最少4个元素。比较次数为3次。
通常,要查找最大的N
元素,您需要进行N-1
次比较。这为您提供4个5个数字,而不是6个。
<强>证明:强>
总有一个N-1
比较的解决方案:只比较前两个,然后选择较大的并与下一个进行比较,选择较大的并与下一个比较......
不能有更短的解决方案,因为此解决方案无法比较所有元素。
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是最大的。
你必须要幸运。