class Solution {
public int findKthLargest(int[] nums, int k) {
quickSort(nums, 0, nums.length-1);
return nums[nums.length-k];
}
public void quickSort(int[] nums, int l, int r){
int i,j, mid, temp;
if(l>r){
return;
}
i = l;
j = r;
mid = l;
while(l<r){
while(nums[r]>=nums[mid]&&r>l){
r--;
}
while(nums[l]<=nums[mid]&&l<r){
l++;
}
if(l<r){
temp = nums[l];
nums[l] = nums[r];
nums[r] = temp;
}
}
temp = nums[mid];
nums[mid] = nums[l];
nums[l] = temp;
quickSort(nums,i,l-1);
quickSort(nums, r+1, j);
}
}
while(nums[r]>=nums[mid]&&r>l){
r--;
}
while(nums[l]<=nums[mid]&&l<r){
l++;
}
这里如果顺序不对,我们是走不下去的,因为如果先增加,这样的话
int[] nums = {3,2,3,4,1};
对于这个数组,这里的 mid = 4
这样的变化是我们不能接受的因为,
temp = nums[mid];
nums[mid] = nums[l];
nums[l] = temp;
后面的转换就是为了把mid和刚好小于mid上数的left转换