package com.interview.algorithms.array;
import com.interview.utils.ArrayUtil;
/**
* Created_By: stefanie
* Date: 14-10-24
* Time: 下午2:43
*/
public class C4_71_FindKMaxNumber_QuickFind {
public static int[] find(int[] array, int k){
find(array, k, 0, array.length - 1);
return array;
}
private static void find(int[] array, int k, int low, int high){
if(low >= high) return;
int p = partition(array, low, high);
if(p == k - 1 || p == k) return;
else if(p > k) find(array, k, low, p - 1);
else find(array, k, p + 1, high);
}
public static int partition(int[] array, int low, int high){
if(low == high) return low;
int i = low;
for(int j = low + 1; j <= high; j++){
if(array[j] > array[low]) ArrayUtil.swap(array, ++i, j);
}
ArrayUtil.swap(array, low, i);
return i;
}
}