我是一名编程学生,对于我正在开发的项目,我必须做的事情是计算int值向量的中值。我只能使用STL和向量成员函数(如.begin()
,.end()
和.size()
)中的排序函数执行此操作。在Vector中存储的值的计算中值 - C++?
我也应该确保我找到向量具有奇数个值或偶数个值的中位数。
而我是卡住,下面我已经包括了我的尝试。那么我哪里错了?如果您愿意给我一些指引或资源以朝着正确的方向前进,我将不胜感激。
代码:
int CalcMHWScore(const vector<int>& hWScores)
{
const int DIVISOR = 2;
double median;
sort(hWScores.begin(), hWScores.end());
if ((hWScores.size() % DIVISOR) == 0)
{
median = ((hWScores.begin() + hWScores.size()) + (hWScores.begin() + (hWScores.size() + 1)))/DIVISOR);
}
else
{
median = ((hWScores.begin() + hWScores.size())/DIVISOR)
}
return median;
}
谢谢!
标签请:
如果你想避免分配数据集的拷贝的成本,并愿意修改基础数据集,你可以使用它代替。 – 2010-01-22 03:46:43
我不确定在这里使用“2”的命名常量是否合适。 – 2010-01-22 03:48:50
@最大 - 感谢您的收获,我标记了它。 – Alex 2010-01-22 03:50:22