博文T3航站楼 ✈ P1923【深基9.例4】求第 k 小的数
预先准备
排序用函数 sort
,不会用着参看文章sort用法
头文件 #include<algorithm>
及一个数组 a[5000005]
为了保证输入效率,我们用 scanf
进行输入。不会者可参看文章scanf用法
思路
1.定义 n,k : 数的个数/求第几小
int n,k;
cin>>n>>k;
2.循环输入数组
for(int i=1;i<=n;i++){
cin>>a[i];
}
3.排序
sort(a+1,a+n+1);
4.输出:由于最小的数是第0小,所以要错位加1
cout<<a[k+1];
至此,这道题就做完了。完整代码看下面
完整代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[5000005];
int main(){
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
sort(a+1,a+n+1);
cout<<a[k+1];
return 0;
}
提示:用O2
优化才能不超时