-
Quick Select实质是快速排序算法中的一个步骤(找出未排序数组中的任意大的元素),其中用到了分隔数组的思想,默认的分隔条件是小于等于中间元素的在左边,大于的放在右边,这样将原问题分割一半,在确定的一半空间里寻找第k大的元素。Quick Select平均情况下的时间复杂度是O(n)。相关题目:Kth Largest Element,Median(当数组长度为奇数和偶数时,其中位数是不同的)等。
-
Kth Largest Element in an Array,最优解法。
-
Quick Select与Quick Sort有许多相似之处,不同点在于图中画红框的部分,这里是用O(n)的时间将规模为n的问题减半,判断下一步是在哪个半区中寻找第k大的元素,这里排序是按降序排的。省去了快速排序中最后的递归过程,所以时间复杂度上有所优化。
-
相似题目:Median Of Two Sorted Array,将规模为n的问题经过O(1)的时间复杂度转化成规模为n/2的问题,时间复杂度是logn(举例:在班级排名第10名,要想排名上升到第五名,可以把前五名弄走),这里要让k变成k/2,要么移除A中的前k/2