求vector中的中位数
时间: 2023-06-01 16:05:20 浏览: 404
中位数可以通过对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
相关问题
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)。
c++ 找vector的中位数点
可以通过对vector进行排序,然后找到中间位置的元素来求得中位数。具体代码如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = {1, 3, 2, 5, 4};
sort(v.begin(), v.end());
int n = v.size();
int median;
if (n % 2 == 0) {
median = (v[n/2-1] + v[n/2]) / 2;
} else {
median = v[n/2];
}
cout << "Median: " << median << endl;
return 0;
}
```
输出结果为:
```
Median: 3
```
注意,如果vector中元素个数为偶数,则中位数为中间两个元素的平均值。如果vector中元素个数为奇数,则中位数为中间的元素。
阅读全文