作用
求数列第k小的数
头文件
algorithm
用法
nth_element(a,a + k, a + n)
第k个数有序,前面皆小于或等于它,后面皆大于或等于它,k从0开始
求第k大
1、k = n - k
2、nth_element(a, a + k, a + n, cmp); 需自定义比较函数
3、nth_element(a, a + k, a + n, greater())
代码
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n, k;
int a[100005];
int main(){
cin >> n >> k;
for(int i = 0; i < n; i++) scanf("%d", a + i);
nth_element(a, a + k - 1, a + n); //第k小
printf("%d\n", a[k - 1]);
return 0;
}
输入:
7 5
1 4 3 9 8 7 2
输出:
7