C++STL之nth_element函数浅入

4 篇文章 0 订阅

出自–南昌理工学院ACM集训队

模板函数
头文件:
函数名: std::nth_element

目前已知用法:
可以查找一个数组中的第k小的数,k的左边都是小于等于k的数,k的右边都是大于等于k的数.

nth_element(a,a+k,a+n)
a代表数组名,a+k代表查找数组中第k小的数,a+n等于查找长度为n

介绍完了那就开始解个题目:

洛谷 p1923:求第k小的数

这道题如果用快排来解的话会有两个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函数目前来说我只是使用了点皮毛,后续如果深入了解这个函数的具体能有那些妙用,还会继续更新这篇文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值