0
点赞
收藏
分享

微信扫一扫

排序之求第k小数

柠檬果然酸 2022-04-03 阅读 28
c++

题目:第k小数

题解:

# include <iostream>
# include <algorithm>
using namespace std;
int main()
{
	int n, k;
	cin >> n >> k;
	int a[5000005];
	for(int i=0;i<n;i++)
	{
		cin >> a[i];
	}
	nth_element(a, a+k, a + n);
	cout << a[k] << endl;
	return 0;
}

对于nth_element:

        nth_element(a,a+k,a+n),将a中第k小的数放在该放的位置。a[k]即使a中第k小的数。

要求第k大:

        加入cmp函数;

# include <iostream>
# include <algorithm>
using namespace std;
bool cmp(int a, int b)
{
	if (a > b)return 1;
	else return 0;
}
int main()
{
	int n, k;
	cin >> n >> k;
	int a[5000005];
	for (int i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	nth_element(a, a + k - 1, a + n, cmp);
	cout << a[k - 1] << endl;
	return 0;
}
举报

相关推荐

0 条评论