c++求第k大的数stl
时间: 2023-11-06 22:48:48 浏览: 141
你可以使用STL中的`nth_element`函数来找到第k大的数。`nth_element`函数会将第k大的元素放在正确的位置上,并将其左边的元素都小于它,右边的元素都大于它。以下是一个示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums = {9, 4, 2, 7, 5, 1, 8, 6, 3};
int k = 4; // 找第4大的数
std::nth_element(nums.begin(), nums.begin() + k - 1, nums.end(), std::greater<int>());
// 第k大的数会被放在nums[k-1]的位置上
std::cout << "第" << k << "大的数是:" << nums[k - 1] << std::endl;
return 0;
}
```
运行结果为:
```
第4大的数是:6
```
在这个示例中,我们使用`std::nth_element`函数来找到第k大的数。`nth_element`函数接受四个参数:第一个参数是要进行操作的容器的起始迭代器,第二个参数是要找的第k大的数的位置(这里是`nums.begin() + k - 1`),第三个参数是要进行操作的容器的末尾迭代器,第四个参数是一个比较函数,用于指定排序的顺序(这里使用了`std::greater<int>()`表示降序)。
注意,`nth_element`函数会改变容器中元素的相对顺序,但确保第k大的元素在正确的位置上。
阅读全文