Algorithm_最大堆最小堆来求中位数
2014-08-07 19:38
246 查看
参考文章
http://yaronspace.cn/blog/archives/1306
利用堆来实现前k个元素已经不稀奇了。对于实现中位数的方法了?因为n的大小一直在变化,所以如果定义k=n/2,k也是不确定的。所以一个堆的方法就显得不可行了。
由此我觉得文章中的这种方法是很赞的。
两个堆,一个最大堆来实现储存比中位数m小或者相等的值,一个最小堆来储存比m大或者相等的值,当有新的数进来,根据与m的关系,大于m的值放到最小堆,小于m的值放到最大堆。当两个堆的元素个数差值大于1时,就表明,中位数变了,不是原来的m,这时候应该把m插入到元素个数小的堆中,然后从元素个数多的堆中取出最大或者最小的元素出来当做m
http://yaronspace.cn/blog/archives/1306
利用堆来实现前k个元素已经不稀奇了。对于实现中位数的方法了?因为n的大小一直在变化,所以如果定义k=n/2,k也是不确定的。所以一个堆的方法就显得不可行了。
由此我觉得文章中的这种方法是很赞的。
两个堆,一个最大堆来实现储存比中位数m小或者相等的值,一个最小堆来储存比m大或者相等的值,当有新的数进来,根据与m的关系,大于m的值放到最小堆,小于m的值放到最大堆。当两个堆的元素个数差值大于1时,就表明,中位数变了,不是原来的m,这时候应该把m插入到元素个数小的堆中,然后从元素个数多的堆中取出最大或者最小的元素出来当做m
相关文章推荐
- Google 面试题:Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java
- 最大堆和最小堆求数据流中的中位数【java实现】
- 百练+priority_queue应用+最大堆最小堆找出中位数
- 用最大堆和最小堆实现中位数查找
- 求中位数问题:最小堆,最大堆
- Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java
- 最大堆和最小堆找中位数
- 使用最大堆和最小堆实现中位数的查找
- [编程之美]使用最大堆和最小堆来求中位数
- Algorithm: 最大公约数 最小公倍数
- 最大堆 最小堆 解决TOPK问题
- 堆排序 两种实现(最小堆和最大堆)
- PHP SPL标准库之数据结构堆(SplHeap)、最大堆(SplMaxHeap)、最小堆(SplMinHeap)
- 堆,最大堆,最小堆,最大左高树 源码
- 最大堆最小堆总结
- 【Algorithm】最大连续子数组和
- C++判断一个序列是否为堆(最大堆、最小堆)
- python spark 求解最大 最小 平均 中位数
- Algorithm-Arrays-4 最大绝对距离Max Absolute Difference
- Java实现堆,最大堆,最小堆,左高树,左低树