顺序查找数组中k个最大元素的最快方法是什么(即从最大元素开始到第k个最大元素)?
一种选择是:
使用中位数中位数或内向排序之类的线性时间选择算法,找到第k个最大元素,然后重新排列这些元素,以便从第k个元素开始的所有元素都大于第k个元素。
使用堆排序或快速排序之类的快速排序算法,对第k个元素进行排序。
步骤(1)花费时间O(n),而步骤(2)花费时间O(k log k)。总体而言,该算法的运行时间为O(n + k log k),这非常非常快。
希望这可以帮助!