【发布时间】:2019-08-08 11:47:15
【问题描述】:
我正在编写一个程序来查找 CPP 中数组的中位数。我不确定我是否清楚地知道什么是中位数。据我所知,我已经编写了程序来查找中位数,但是当数组为偶数时,我很困惑是否应该打印除中间两个时得到的十进制输出除法的上限或底值数组中的元素。
using namespace std;
void findMedian(int sortedArray[], int N);
int main()
{
int ip[4] = {1, 2, 5, 8};
findMedian(ip, 4);
}
void findMedian(int sortedArray[], int N)
{
int size = N;
int median;
if ((size % 2) != 0)
{
median = sortedArray[(size / 2)];
}
else
{
median = (sortedArray[(size / 2) - 1] + sortedArray[size / 2]) / 2;
}
cout << median;
}
在此先感谢,如果有人能给出寻找中位数的字面目的,我将不胜感激,它会帮助我在必须处理中位数时不再问这个问题。 请原谅我的英语。
【问题讨论】:
-
If there is an even number of observations, then there is no single middle value; the median is then usually defined to be the mean of the two middle values. 在您的情况下,根据此定义,中位数不是整数,而是 3.5。你可以舍入它,但你可能会得到错误的结果。考虑
{1,2,3,4},其中中位数介于 2 和 3 之间,但不是 2 也不是 3。 -
谢谢你,这很清楚。我为比赛编写的这个程序应该只返回一个整数,并且问题没有提到任何关于极端情况的地方。
-
那么,应该在竞赛问题定义中指定偶数数组的整数中位数是什么意思。如果不是,则定义不完整。
-
OT 请注意,您与 std::size 存在命名空间冲突