容器中数据由大到小排列 ,取前N位,计算平均值 c++ 示例
时间: 2024-10-10 17:14:35 浏览: 17
在 C++ 中,如果你需要对容器(如 vector 或数组)中的数据按照从大到小排序,然后取前 N 个数求平均值,你可以使用 `<algorithm>` 库提供的排序算法 `std::sort` 和 `std::partial_sum` 功能。这里是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含 sort 和 partial_sum 函数
#include <numeric> // 包含 accumulate 函数
double findTopNAverage(std::vector<int>& nums, int n) {
if (n > nums.size()) {
std::cerr << "Error: n is larger than the container size." << std::endl;
return -1; // 返回错误处理结果
}
// 对容器中的数据按降序排序
std::sort(nums.rbegin(), nums.rend());
// 使用 partial_sum 计算前 n 个数的累加和
auto sum = std::partial_sum(nums.begin(), nums.begin() + n, nums.begin());
// 计算并返回平均值
double average = static_cast<double>(sum[n - 1]) / n;
return average;
}
int main() {
std::vector<int> numbers = {5, 9, 2, 8, 4, 7, 1, 6, 3};
int N = 3;
double result = findTopNAverage(numbers, N);
if (result != -1) {
std::cout << "The average of the top " << N << " largest numbers is: " << result << std::endl;
}
return 0;
}
```
在这个例子中,`findTopNAverage` 函数首先检查 `n` 是否小于等于容器长度,然后使用 `std::sort` 对整数向量进行降序排列。接着,`std::partial_sum` 计算了前 `n` 个数的累计和,最后除以 `n` 得到平均值。