求一个数组的第K大的数
import java.util.Scanner;
public class test2 {
//查找第k大的值
private static int partition(int[] L, int low, int high) {
int temp = L[low];
int pt = L[low]; // 哨兵
while (low != high) {
while (low < high && L[high] <= pt)
high--;
L[low] = L[high];
while (low < high && L[low] >= pt)
low++;
L[high] = L[low];
}
L[low] = temp;
return low;
}
public static void findk(int k, int[] L, int low, int high) {
if(L == null || L.length==0){
return;
}
int temp;
temp = partition(L, low, high);
if (temp == k - 1) {
System.out.println( L[temp]);
} else if (temp > k - 1)
findk(k, L, low, temp - 1);
else
findk(k, L, temp + 1, high);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in
);
String[] s = sc.nextLine().trim().split(" ");
int[] array = new int[s.length];
for (int i = 0; i < s.length; i++) {
if (!"".equals(s[i])) {
array[i] = Integer.parseInt(s[i]);
}
}
int k = sc.nextInt();
findk(k, array, 0, array.length-1);
}
}