c++ - 小数的中位数是多少?
问题描述
我正在编写一个程序来查找 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;
}
在此先感谢,如果有人能给出寻找中位数的字面目的,我将不胜感激,它会帮助我在必须处理中位数时不再问这个问题。原谅我的英语。
解决方案
在奇数数组中,中位数是唯一的,但在偶数数组中,有两个中位数:下中位数(第 (n/2) 个位置的那个)和上中位数(第 (n/2+1) 个位置的那个) )。我通常总是看到较低的中位数被用作偶数数组的“中位数”。
在这种情况下,您只需要一个用于偶数和奇数数组的公式:
medianPosition = n/2; // integer division
median = sortedArray[medianPosition];
请注意,这仅适用于索引从零开始的数组(如 C/C++)。
推荐阅读
- python - 向 Class 添加方法在 python3.7.0 中不起作用,与 python 2.7 相同
- python - 如何将 python 模块捆绑到单个 [可执行] zip 存档中?
- python - python多线程无法输出完整结果
- normal-distribution - 如何测试数据集是否服从超高斯分布
- java - 为什么 JIT 编译器(Java)不保存结果?
- colors - 如何在颤动中调用带有彩色文本的 print() 到 android studio 控制台
- hyperledger-sawtooth - 创建 Hyperledger Sawtooth 网络
- reference - 在 Common Lisp 中,什么时候引用对象,什么时候直接按值访问?
- php - Timber Gutenberg Block - 动态回调函数
- angular5 - 如何重置下拉菜单并使其选择默认选项?