如何在数组中找到最大,第2,第4,第8 ...... 2 ^ logn个最大元素,使用O(n)算法

时间:2014-09-30 20:08:24

标签: algorithm sorting selection big-o

是否有O(n)时间算法来查找数组中最大,第二大,第四大,......,2 k 最大等元素?

1 个答案:

答案 0 :(得分:4)

由于这看起来像是一个家庭作业问题,我不会给出完整答案。但是,这里有一些有用的提示:

  1. 你知道如何在时间O(n)中找到数组中的第k个最大元素吗?如果没有,你可能需要在你取得任何进展之前仔细研究。
  2. 1 + 2 + 4 + 8 + ... + 2 log n = 2n - 1,即O(n)。
  3. 在智能选择的阵列上使用第(1)部分的算法。 (2)的总和将帮助您证明您具有所需的运行时限制。
  4. 希望这有帮助!