题解 | #寻找第K大#
寻找第K大
https://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param a int整型一维数组 * @param n int整型 * @param K int整型 * @return int整型 */ public int findKth (int[] a, int n, int K) { // write code here return quick_search(a,0,n-1,K,n); } int quick_search(int[] a,int low,int high,int K,int n){ int left=low; int right=high; // System.out.println("left:"+left); // System.out.println("right:"+right); if(left>right) return -1; int base=left; int temp=a[base]; while(left<right){ while(left<right&&a[right]>=temp){ right--; //System.out.println("22:"); } while(left<right&&a[left]<=temp){ //System.out.println("11:"); left++; } if(left<right){ int b=a[left]; a[left]=a[right]; a[right]=b; } } //System.out.println("left:"+left); //System.out.println("right:"+right); a[base]=a[left]; a[left]=temp; //System.out.println("di ji xiao :"+(n-K)); if(left==(n-K)){ return temp; } else if(left<(n-K)){ return quick_search(a,left+1,high,K,n); } else{ return quick_search(a,low,left-1,K,n); } } }