题目
思路
使用快速排序的方法写
代码
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var findKthLargest = function(nums, k) {
//快速排序
//进行交换
function quickSort(arr, left, right){
if(left >= right) return;
let pivot = arr[right];
let index = partition(arr, left, right, pivot);
quickSort(arr, left, index - 1);
quickSort(arr, index + 1, right);
}
function partition(arr, left, right ,pivot){
let leftPosition = left - 1;
let rightPosition = right;
while(true){
while(arr[++leftPosition] > pivot);
while(rightPosition > 0 && arr[--rightPosition] < pivot);
if(leftPosition >= rightPosition){
break;
}else{
swap(arr, leftPosition, rightPosition);
}
}
swap(arr, leftPosition, right);
return leftPosition;
}
function swap(arr, i, j){
let tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
quickSort(nums, 0, nums.length - 1);
return nums[k - 1];
};