找到Max和4th Max元素

时间:2017-05-11 04:03:27

标签: arrays comparison big-o minmax

要查找数组的最大值和第4个最大值,所需的最小比较数是多少?我假设我必须使用类似于MinMax的算法,并在此处找到解决方案:

Find the 2nd largest element in an array with minimum number of comparisons \

但我不确定如何使锦标赛风格适应这种情况。

1 个答案:

答案 0 :(得分:1)

有趣的问题......

我认为诀窍就是第二次参加比赛,但是从比赛中取出最大和第二大(由比赛#1决定)。

比赛#1:找到(1)[最大]和(2)[第2大]

锦标赛#2:从集合中删除(1)和(2)。在(3)[最大]和(4)[第2大]中找到。这些将是原始集合中的第3和第4大(

  1. n - 1
  2. log n - 1
  3. (n-2) - 1
  4. log(n-2) - 1
  5. [编辑]:为了完整,我最好尝试一些数学。

    (1)+(2)+(3)+(4)

    => (n - 1)+(log n - 1)+((n - 2) - 1)+(log(n-2) - 1)

    => 2n +(log n)+(log(n-2)) - 6

    => 2n + log(n ^ 2 - 2n) - 6