方法:快速排序
使用快速排序即可
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
qsort(nums,0,nums.size()-1);
return nums[k-1];
}
private:
void qsort(vector<int>& nums, int start, int end){
int mid=start;
int left=start+1,right=end, tmp;
//只有一个元素
if(start==end)
return;
while(left<right){
while(nums[left]>=nums[mid]){
if(left==right)
break;
left++;
}
while(nums[right]<=nums[mid]){
if(right==left)
break;
right--;
}
if(left<right){
tmp = nums[left];
nums[left] = nums[right];
nums[right] = tmp;
left++;right--;
}
}
//交换中间元素和后面的元素
if(left>right || nums[left]<nums[mid]) {
left = left - 1;
}
tmp = nums[left];
nums[left] = nums[mid];
nums[mid] = tmp;
mid=left;
//递归
if(start<=mid-1)
qsort(nums,start,mid-1);
if(end>=mid+1)
qsort(nums,mid+1,end);
}
};