首页 > 解决方案 > 小数的中位数是多少?

问题描述

我正在编写一个程序来查找 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;
}

在此先感谢,如果有人能给出寻找中位数的字面目的,我将不胜感激,它会帮助我在必须处理中位数时不再问这个问题。原谅我的英语。

标签: c++mathmedian

解决方案


在奇数数组中,中位数是唯一的,但在偶数数组中,有两个中位数:下中位数(第 (n/2) 个位置的那个)和上中位数(第 (n/2+1) 个位置的那个) )。我通常总是看到较低的中位数被用作偶数数组的“中位数”。

在这种情况下,您只需要一个用于偶数和奇数数组的公式:

medianPosition = n/2; // integer division
median = sortedArray[medianPosition];

请注意,这仅适用于索引从零开始的数组(如 C/C++)。


推荐阅读