快速排序的思路:
以数组的第一个元素作为基准,根据这个基准值去数组中找位置,也就是根据循环判断,当右查找结束,如果还未left==right则执行左查找,直至left==right则基准值的位置确定。
并根据该位置来进行左排序和右排序。

代码:

import java.util.*;

public class Solution {
    public int findKth(int[] a, int n, int K) {
        quicksort(a,0,n-1);
        return a[n-K];

    }

    //分割点
    public int Partition(int left,int right,int []a){
        int standard=a[left];
        while(left<right){
//这里该注意的一个点,是数组内的互换,而不是与基准值standard的互换。
            while(left<right&&standard<=a[right]) right--;
            swap(a,left,right);

            while(left<right&&standard>=a[left]) left++;
            swap(a,left,right);
            } 
            return left;
    }

        //数组排序
        public void quicksort(int []a ,int left,int right){
            if(left<right){
            int mid=Partition(left,right,a);
            //根据分割点来排序
            quicksort(a,left,mid-1);  
            quicksort(a,mid+1,right );
            }
        }

        public  void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}