出自–南昌理工学院ACM集训队
模板函数
头文件:
函数名: std::nth_element
目前已知用法:
可以查找一个数组中的第k小的数,k的左边都是小于等于k的数,k的右边都是大于等于k的数.
nth_element(a,a+k,a+n)
a代表数组名,a+k代表查找数组中第k小的数,a+n等于查找长度为n
介绍完了那就开始解个题目:
这道题如果用快排来解的话会有两个TLE,可以用nth_element函数来解
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int a[5000000];
int main()
{
int n, k;
scanf_s("%d %d",& n, &k);
for (int i = 0; i < n; i++)
{
scanf_s("%d",&a[i]);
}
nth_element(a, a + k, a + n);
printf("%d",a[k]);
注:请使用scanf和printf,如果用cin和cout进行输入输出最后还是会TEL,我查找之后scanf效率是比cin快的,具体可以查看下面这篇文章
探寻c++最快读取文件的方案
——关于nth_elemtent函数目前来说我只是使用了点皮毛,后续如果深入了解这个函数的具体能有那些妙用,还会继续更新这篇文章。