按顺序查找k个最大元素

use*_*188 5 sorting algorithm selection

按顺序查找数组中k个最大元素的最快方法是什么(即从最大元素到第k个最大元素)?

tem*_*def 12

一种选择如下:

  1. 使用线性时间选择算法,如中位数或中位数,找到第k个最大元素并重新排列元素,使第k个元素前向的所有元素都大于第k个元素.

  2. 使用快速排序算法(如heapsort或quicksort)对第k个前向的所有元素进行排序.

步骤(1)花费时间O(n),步骤(2)花费时间O(k log k).总的来说,该算法在时间O(n + k log k)内运行,这非常非常快.

希望这可以帮助!