一尘不染

依次找到k个最大元素

algorithm

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


阅读 225

收藏
2020-07-28

共1个答案

一尘不染

一种选择是:

  1. 使用中位数中位数或内向排序之类的线性时间选择算法,找到第k个最大元素,然后重新排列这些元素,以便从第k个元素开始的所有元素都大于第k个元素。

  2. 使用堆排序或快速排序之类的快速排序算法,对第k个元素进行排序。

步骤(1)花费时间O(n),而步骤(2)花费时间O(k log k)。总体而言,该算法的运行时间为O(n + k log k),这非常非常快。

希望这可以帮助!

2020-07-28