题目:
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
For example,
Given [3,2,1,5,6,4] and k = 2, return 5.
Note:
You may assume k is always valid, 1 ≤ k ≤ array’s length.
解析:
//思路:
// 把这个数组通过快排按从大到小顺序
//然后去除数组的第几个数值,返回
class Solution {
public int findKthLargest(int[] nums, int k) {
quickSort test = new quickSort();
int length = nums.length - 1;
test.quickSort(0, length, nums);
int val = nums[k-1];
return val
}
}
class quickSort{
public void quickSort(int left,int right,int[] arr){
//这里的顺序不能变,要先判断,不然java执行不下去
if(left > right){
return ;
}
int temp,t,i,j;
i = left; j = right;
temp = arr[left];
while(i != j){
//数组右边开始,找到比基准数大的,停
while(i < j && arr[j] <= temp){
j--;
}
//数组左边开始,找到比基准数小的,停
while(i < j && temp <= arr[i]){
i++;
}
//交换
if(i < j){
t = arr[i]; arr[i] = arr[j]; arr[j] = t;
}
}
//基准数归位
arr[left] = arr[i]; arr[i] = temp;
quickSort(left, i-1, arr);
quickSort(i+1, right, arr);
}
}