编辑代码

class Main {
	public static void main(String[] args) {
      int [] arr={3,1,2,5,4,7,6};
		int k=2;
		System.out.println(quickSort(arr, 0, arr.length-1, k));
	}

    static int quickSort(int [] arr,int start,int end,int k){
		//递归结束条件
		if(start>end){
			return -1;
		}
		int i=start;
		int j=end;
		int base=arr[start];
		while(i<j){
			while(i<j && arr[j]>=base){
				j--;
			}
			while(i<j && arr[i]<=base){
				i++;
			}
			if(i<j){
				int temp=arr[j];
				arr[j]=arr[i];
				arr[i]=temp;
			}
		}
		//此时i=j,交换base元素的位置
		arr[start]=arr[i];
		arr[i]=base;
		if(i==arr.length-k){
			//查找到第k大的数字
			return arr[i];
		}
		else if(i<arr.length-k){
			//在基准值右边寻找
			return quickSort(arr, i+1, end, k);
		}else{
			//在基准值左边寻找
			return quickSort(arr, start, i-1, k);
		}
	}

}