给出一个包含 n个整数的数组 a,使用vector存储。 用STL算法实现输出数组的第 k大数.c++代码实现
时间: 2024-02-13 13:07:21 浏览: 179
C++ STL算法实现大数计算
5星 · 资源好评率100%
以下是使用STL算法实现输出数组的第k大数的C++代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
nth_element(a.begin(), a.begin() + k - 1, a.end(), greater<int>());
cout << a[k - 1] << endl;
return 0;
}
```
解释一下代码的思路:
1. 首先输入数组的大小n和要求的第k大数k,以及n个整数存储在vector a中;
2. 然后使用STL中的nth_element算法,将vector a中第k大的元素移动到a.begin()+k-1的位置,以greater<int>()作为比较器,即求第k大数;
3. 最后输出a[k-1]即为第k大数。
需要注意的是,STL中的nth_element算法的时间复杂度为O(n),比一般的排序算法要快,但是不保证前k个数是有序的。
阅读全文