解题思路:根据题目的提示,按照快排的思想解题。在快排过程中,每次递归都可以确定某一个元素的位置,若该元素正处于第K大的位置,则直接返回该值;否则,在快排之后返回第K大的元素值。需注意的是,如果按照升序排列,第K大的元素位置在数组a的n-K的位置上。

import java.util.*;

public class Finder {
    public int findKth(int[] a, int n, int K) {
        // write code here
        return quickSort(a,0,n-1,n-K);
    }
    public int quickSort(int[] a,int low,int high,int K){
        int temp=a[low];
        int i=low;
        int j=high;
        while(i<j){
            while(i<j&&a[j]>=temp){
                j--;
            }
            a[i]=a[j];
            while(i<j&&a[i]<=temp){
                i++;
            }
            a[j]=a[i];
        }
        a[i]=temp;
        if(i==K){
            return temp;
        }
        if(low<i-1){
            quickSort(a,low,i-1,K);
        }
        if(j+1<high){
            quickSort(a,j+1,high,K);
        }
        return a[K];
    }
}