public class findKMax {
public static int findKMaxInteger(int array[],int low,int high, int findK){
int i = low;
int j = high;
int key = array[i];
while(i < j){
while(i < j && array[j] >= key)
j--;
array[i] = array[j];
while(i < j && array[i] <= key)
i++;
array[j] = array[i];
array[i] = key;
}
if(array.length-i < findK) {
return findKMaxInteger(array, low, i - 1, findK);
}else if(array.length-i > findK) {
return findKMaxInteger(array, i + 1, high, findK);
}else{
return i;
}
}
public static void main(String[] args){
int[] array = {0,7,8,35,12,90,2,6};
int findK = 3;
int index = findKMaxInteger(array, 0, array.length-1, findK);
System.out.println("maxK index:"+index+",array["+index+"]="+array[index]);
}
}
快速排序找第k大的数
最新推荐文章于 2022-03-19 21:47:44 发布