-
题目描述:
-
查找一个数组的第K小的数,注意同样大小算一样大。
如 2 1 3 4 5 2 第三小数为3。
-
输入:
-
输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000),再输入k。
-
输出:
-
输出第k小的整数。
-
样例输入:
-
6 2 1 3 5 2 2 3
-
样例输出:
-
3
import java.io.IOException;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.Scanner;
import java.util.PriorityQueue;
import java.util.TreeSet;
import java.util.Comparator;
import java.util.Iterator;
class Main
{
public static final boolean DEBUG = false;
public static void main(String[] args) throws IOException
{
Scanner cin;
int n;
if (DEBUG) {
cin = new Scanner(new FileReader("d:\\OJ\\uva_in.txt"));
} else {
cin = new Scanner(new InputStreamReader(System.in));
}
Comparator<Integer> cmp = new Comparator<Integer>() {
public int compare(Integer a, Integer b)
{
return b - a;
}
};
while (cin.hasNext()) {
n = cin.nextInt();
TreeSet<Integer> ts = new TreeSet<Integer>();
for (int i = 0; i < n; i++) {
int num = cin.nextInt();
if (ts.contains(num)) continue;
else {
ts.add(num);
}
}
//System.out.println("size:" + ts.size());
Iterator<Integer> it = ts.iterator();
int cnt = 0;
int m = cin.nextInt();
while (it.hasNext()) {
cnt++;
int num = it.next();
if (cnt == m) {
System.out.println(num);
break;
}
}
}
}
}