求vector中的中位数
时间: 2023-06-01 10:05:20 浏览: 455
中位数可以通过对vector排序后取中间的数来获得。如果vector的元素数量是偶数,则中位数为中间两个数的平均值。可以使用如下代码进行实现:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = { 1, 3, 2, 5, 4, 6 };
sort(v.begin(), v.end()); // 对vector排序
int n = v.size();
if (n % 2 == 0) // 如果元素数量是偶数
{
int m1 = v[n / 2 - 1];
int m2 = v[n / 2];
cout << "中位数为: " << (m1 + m2) / 2 << endl;
}
else // 如果元素数量是奇数
{
int m = v[n / 2];
cout << "中位数为: " << m << endl;
}
return 0;
}
```
输出为:中位数为: 3.5
相关问题
C++求vector的中位数
在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的长度是否为偶数,然后根据条件返回中位数。如果需要实时处理大量数据,可以考虑用更高效的算法,如快速选择法。
vector找中位数点
如果要在一个二维平面上找到一组点的中位数,可以按照以下步骤进行:
1. 按照x坐标或y坐标对所有点进行排序;
2. 如果点的数量是奇数,那么中位数就是排序后的中间点;
3. 如果点的数量是偶数,那么中位数就是排序后中间两个点的平均值。
例如,对于以下6个点:
(1, 2), (3, 4), (5, 6), (8, 9), (10, 12), (13, 14)
按照x坐标排序后为:
(1, 2), (3, 4), (5, 6), (8, 9), (10, 12), (13, 14)
中位数为(8, 9);
按照y坐标排序后为:
(1, 2), (3, 4), (5, 6), (10, 12), (8, 9), (13, 14)
中位数为(5, 6)和(8, 9)的平均值,即(6.5, 7.5)。
阅读全文