P1923题解

发布时间 2024-01-09 22:10:07作者: Rayliuliu

博文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优化才能不超时