C++求vector的中位数
时间: 2024-12-12 21:11:07 浏览: 7
在C++中,计算vector的中位数通常涉及到对数据进行排序,然后根据元素的数量选择中间值。如果你有偶数个元素,中位数将是中间两个数的平均值;如果有奇数个元素,中位数就是中间的那个数。下面是一个简单的示例,展示如何计算vector的中位数:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含sort函数
double findMedian(std::vector<int>& nums) {
int n = nums.size();
// 对vector进行排序
std::sort(nums.begin(), nums.end());
// 判断vector大小并找到中位数
if (n % 2 == 0) { // 偶数个元素
return (nums[n / 2 - 1] + nums[n / 2]) * 0.5;
} else { // 奇数个元素
return nums[n / 2];
}
}
int main() {
std::vector<int> vec = {5, 2, 9, 1, 7};
double median = findMedian(vec);
std::cout << "The median of the vector is: " << median << std::endl;
return 0;
}
```
在这个例子中,`findMedian`函数首先检查vector的长度是否为偶数,然后根据条件返回中位数。如果需要实时处理大量数据,可以考虑用更高效的算法,如快速选择法。
阅读全文