#2258. 寻找第K大数

寻找第K大数

寻找第K大数

说明

N个小朋友在一起做游戏。每个小朋友在自己的硬纸板上写一个数,然后同时举起来。接着,小Y老师提一个问题,看哪个小朋友先抢答出来。问题是:在这N个数中,第K大的是哪个数?请你编程完成。


输入格式

输入文件的第一行为 2 个整数,依次为 NK (K <= N <= 10000)。 下面 N 行,每行为一个整数,表示从第 1 个小朋友到第 N 个朋友分别写的数。假设这些小朋友只知道 -32768~32767 之间的数。


输出格式

输出文件只有一行,输出一个数,为第 K 大的那个数。


样例

输入数据 1

4 3
1
2
2
4

输出数据 1

2

提示

  • 注意:本题第 2 大的数是 2,第 3 大的数也是 2,第 4 大的数是 1

题目分析

  • 本题要求找出数组中的第 K 大的数。考虑到数组可能包含重复的数字,第 K 大的数不一定是唯一的。
  • 对于输入的数据,我们可以利用排序算法将数字按从大到小排列,之后选择第 K 个元素。这里,我们可以利用 快速排序排序函数 来完成。
  • 另外,可以通过使用堆来提高效率,特别是在需要频繁获取第 K 大数的情况下。