C++求中位数,不知道哪错了。求高手看看算法、

double median;
if(!(count %= 2))
{
median = (data[count / 2] + data[(count / 2) + 1] / 2);
}
else
{
median = data[(count + 1) / 2];
}

首先不知道data[ ]数据类型 其次median = (data[count / 2] + data[(count / 2) + 1] / 2);应该除以2.0追问

data[]是double类型

追答

应该除以2.0

追问

只能枚举和整数。。。。。不过我知道原因了,count应该-1。数组是从0开始的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-23
median = ((data[count / 2] + data[(count / 2) + 1] )/ 2);
第2个回答  2012-06-23
是不是你有没有定义data[]吧!造成出错.追问

有定义。也能出现结果,就是答案是错的。

追答

程序你到底想执行什么功能先

追问

中位数,数据也用算法从小到大排列了(没有错误)。偶数的数据量/2的那个加上/2+1的那个的和/2就是中位数。(奇数数量量+1)/2就是中位数。这是原理。用if-else来实现。但是结果确是错的。。。

相似回答
大家正在搜