我正在尝试计算C ++中已排序数字的中位数,我想知道C ++库中是否有内置函数来执行此操作。
答案 0 :(得分:7)
无需使用功能。要查找具有奇数项目的列表的中位数,只需执行
cout << sortedArray[size/2];
其中sortedArray是数组,size是数组的大小。 对于具有偶数的数组,您应该执行类似这样的操作
cout << (sortedArray[size/2] + sortedArray[(size/2) - 1])/2
换句话说,取n / 2元素和n / 2-1元素的平均值。
如果你不知道大小,你需要遍历数组并计算有多少元素。使用小数执行它是无关紧要的,因为数组的大小始终是整数。
答案 1 :(得分:0)
如果知道排序数组的大小,可以用O(1)计算其中位数。 当大小未知时(是链表还是什么?),那么计算中位数就会在经典计算机上取O(n)。