public class Solution {
public static int ans;
public int findKth(int[] a, int n, int K) {
quick(a,0,n-1,K);
return ans;
}
//快排模板
void quick(int[] a,int l,int r,int K){
if(l>r)return;
int i=l,j=r,key=l;
while(i<j){
//要注意,key选左边要从右边开始扫描,如果选右边要从左边开始扫描
while(i<j&&a[j]>=a[l])j--;
while(i<j&&a[i]<=a[l])i++;
swap(a,i,j);
}
swap(a,i,l);
//交换完之后判断该位置是否是第K大的位置
if(i==a.length-K)
{
ans=a[i];return;//如果找到第K大的位置所在,直接返回
}
if(i>=a.length-K)quick(a,l,i-1,K);
else quick(a,i+1,r,K);
}
void swap(int[] a,int i,int j){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}