如果c中有两种或更多模式,你可以给我一些提示吗?
我能够创建一个计算模式的程序,但是如果我有一个具有多种模式的数据集,例如5,3,1,2,3,4,6,4
我的程序只找到3作为模式,而不是3和4。 / p>
答案 0 :(得分:3)
方法可能是这样的:
答案 1 :(得分:0)
刚才意识到你被限制在C ..猜这个答案不行。
这应该做你想要的(我想......我没试过)。
std::vector<int> calculateModes(std::vector<int> input)
{
std::sort(input.begin(), input.end());
std::vector<int> modes;
int lastModeCount = 0;
std::vector<int>::const_iterator cursor = input.begin();
while(cursor < input.end())
{
std::vector<int>::const_iterator endOfRun
= std::find_if(cursor, input.end(),
std::not1(std::bind2nd(std::equal_to<int>(), *cursor)));
int modeCount = std::distance(cursor, endOfRun);
if (modeCount > lastModeCount)
{
modes.clear();
modes.push_back(*cursor);
}
else if (modeCount == lastModeCount)
modes.push_back(*cursor);
cursor = endOfRun + 1;
}
return modes;
}