快排
快速排序算法—图文详解,一篇就够了!-CSDN博客
数组中的第K大个最大元素(leetcode.215)
class Solution {
public:
int quickselect(vector<int> &nums, int l, int r, int k) {
if (l == r)
return nums[k];
int base = nums[l], i = l - 1, j = r + 1;
while (i < j) {
do i++; while (nums[i] < base);
do j--; while (nums[j] > base);
if (i < j)
swap(nums[i], nums[j]);
}
if (k <= j)return quickselect(nums, l, j, k);
else return quickselect(nums, j + 1, r, k);
}
int findKthLargest(vector<int> &nums, int k) {
int n = nums.size();
return quickselect(nums, 0, n - 1, n - k);
}
};