我想计算存储在 vector 中的元素的中位数
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
....
....
....
vector<int> trmVa;
int size;
int median;
int trimVal;
trmVa.push_back(trimVal);
size = trmVa.size();
sort(trmVa.begin(), trmVa.end()); //I am having troubles here!!!!
if(size % 2) {
median = (trmVa[size/2 - 1] + trmVa[size/2]) /2;
printf("Module %d \n\n \t Median = %d\n", mod, median);
}else {
median = trimVa[size/2];
printf("Module %d \n\n \t Median = %d\n", mod, median);
}
错误:没有为vector>::iterator algo.h:722定义运算符。感谢您的帮助。
最佳答案
您可以使用std::nth_element更有效地解决此问题。这只会对 vector 进行部分排序,并且具有线性复杂度。这是一个奇数 vector 的示例:
size_t midIndex = trmVa.size()/2;
nth_element(trmVa.begin(), tmrVa.begin() + midIndex, trmVa.end());
中间值为
trmVa[midIndex];
您可以轻松地扩展它以覆盖偶数大小的 vector 。
关于c++ - 对 vector 的整数元素进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12237456/