您现在的位置是:房产观察 > 百科 > 百科知识 >
中位数怎么求(统计学中位数计算方法)
2022-12-31 20:50百科知识 人已围观
标题:
如何得到一个数据流中的中位数?如果从数据流中读取奇数个值,则中值是所有值排序后位于中间的值。如果从数据流中读取偶数个值,则中位数是所有值排序后中间两个数字的平均值。
举个例子,
[2,3,4]的中位数是3
[2,3]的中位数是(2 ^ 3)/2 = 2.5。
设计支持以下两种操作的数据结构:
1.void addNum(int num)-将数据流中的整数添加到数据结构中。
2.double find median()-返回当前所有元素的中值。
示例:
输入:
[\"MedianFinder \",\" addNum \",\" addNum \",\" findMedian \",\" addNum \",\" findMedian\"]
[[],[1],[2],[],[3],[]]
输出:[空,空,空,1.50000,空,2.00000]
想法:
将数组分成两部分。第一部分的最大值和第二部分的最小值是求中位数所需的元素。
你可以维护两个堆:第一部分数据是大堆,第二部分数据是小堆。
在遍历数组的过程中,会维护这两个堆:
1.如果当前元素小于大顶堆,则插入大顶堆;
2.如果两个堆之间的大小差被检查为1,则元素在两个堆之间迁移;
遍历数组后,计算两个堆的中值:
如果两个堆的大小相同,则中位数=两个堆的顶部元素之和/2。
如果两个堆的大小不同,则取堆中编号较大的顶部元素。
代码:
class MedianFinder {public: /** initialize your data structure here. */ MedianFinder() { } void addNum(int num) { if(!lq.empty()
以上内容就是为大家推荐的中位数怎么求(统计学中位数计算方法)
相关推荐:
上海克利森玩具有 小区的优势都有哪 小区的优势都有哪
中位数怎么求(统计学中位数计算方法)
语音朗读