搜索O(n + logn)时间内的最大和第二大数字

pid*_*g89 0 algorithm

可能重复:
使用最少的比较#查找数组中的第二大元素

我可以知道如何在O(n + logn)时间内搜索最大和最大的数字吗?先感谢您.

最好的问候,Pidig

ami*_*mit 7

请注意,O(n+logn) = O(n)在列表上迭代两次是O(n).

  1. 迭代一次找到最大值并删除/标记它,
  2. 然后迭代第二次找到新的最大值(第二大元素),

因为它在数组上迭代了一定次数,所以算法是O(n).

通用k最大的元素:您可以使用分钟做O(nlogk),或选择算法O(n)-如在描述这个答案,但对于2种最大的元素-这些方法是矫枉过正.