繁体   English   中英

对向量的整数元素进行排序

[英]Sorting integer elements of a 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);
}

错误:operator-未定义为vector> :: iterator algo.h:722。 我很感激帮助。

您可以使用std :: nth_element更有效地解决此问题。 这只会对矢量进行部分排序,并具有线性复杂度。 这是一个奇数大小的矢量的例子:

size_t midIndex = trmVa.size()/2;
nth_element(trmVa.begin(), tmrVa.begin() + midIndex, trmVa.end());

中值是

trmVa[midIndex];

您可以轻松扩展它以覆盖偶数大小的向量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM