标准:
import java.util.*;
public class Solution {
public int findKth(int[] a, int n, int K) {
return findK(a,0,n-1,K);
}
public static int partition(int[] arr,int left,int right){
// 快排,每次快排找到一个位置,这个位置的左面的都小于这个位置的数 右面的都大于这个位置的数
int i,j,t;
i = left;
j = right;
int temp = arr[right];
while(i<j){
while(i<j&&temp<arr[i]){
i++;
}
while(i<j&&temp>=arr[j]){
j--;
}
if(i!=j){
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
arr[right] = arr[i];
arr[i] = temp;
return i;
}
public static int findK(int[] arr,int left,int right,int k){
if(left<=right){
int pivot = partition(arr, left, right);
if(pivot == k-1){
return arr[pivot];
}else if (pivot < k - 1) {
return findK(arr, pivot + 1, right, k);
} else {
return findK(arr, left, pivot - 1, k);
}
}
return -1;
}
}