我是一名编程学生,为了一个项目,我需要计算一个int向量的中位数值。我只能使用STL的sort函数以及vector成员函数,例如.begin()
、.end()
和.size()
。
我还需要确保无论向量中有奇数个值还是偶数个值,都能找到中位数。
但我卡住了,下面是我的尝试。我哪里错了?如果您能给我一些指导或资源,让我朝着正确的方向前进,我将不胜感激。
代码:
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;
}
const
,而sort
正在尝试修改其内容。通过按值而非按常量引用传递hWScores
来更改它。 - Rob Kennedy