题目描述
输入 n(1≤n<5000000 且 nn 为奇数)个数字 ai(1≤ai<109),输出这些数字的第 k 小的数。最小的数是第 0 小。
请尽量不要使用 nth_element 来写本题,因为本题的重点在于练习分治算法。
输入格式
无
输出格式
无
输入输出样例
输入 #1
5 1 4 3 2 1 5
输出 #1
2
/*
* @Description: To iterate is human, to recurse divine.
* @Autor: Recursion
* @Date: 2022-03-01 09:22:13
* @LastEditTime: 2022-03-01 09:37:59
*/
#include<iostream>
#include<algorithm>
using namespace std;
int n,a[5000010],k;
int main()
{
while(cin>>n>>k){
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
nth_element(a,a+k,a+n);
// for(int i=0;i<n;i++)
// cout<<a[i];
// cout<<endl;
// cout<<k<<endl;
cout<<a[k]<<endl;
}
}
函数语句:nth_element(数组名,数组名+第k小元素,数组名+元素个数)
511

被折叠的 条评论
为什么被折叠?



