题目描述:
输入一串数列,例如:{12,45,62,44,21,23,89,7,56,32},输入一个整数K,输出第K大的数字
解题思路:
基于快速排序的思想,随机选取一个点p,把比点p大的数字放在数组左边,把比点p小的放到数组右边,点p放在中间。
左边长度为count:
(1)当K<count,递归在左边查找第K大的数
(2)当K>count,递归在右边查找第(K-count)大的数。
(3)当K==count,返回点p,即为第K大的数。
代码如下:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String a=in.nextLine();
String b[]=a.split(" ");
int temp[]=new int[b.length];
for(int i=0;i<b.length;i++){
temp[i]=Integer.valueOf(b[i]);
}
int k=Integer.valueOf(in.nextLine());
int r=selectE(temp,0,b.length-1,k);
System.out.println(temp[r]);
}
static int