![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
堆
GISer_流浪
来自GIS专业的三流程序猿
展开
-
最小的K个数
题目:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4 我们用一个大根堆实时维护数组的前 k小值。首先将前 k个数插入大根堆中,随后从第 k+1个数开始遍历,如果当前遍历到的数比大根堆的堆顶的数要小,就把堆顶的数弹出,再插入当前遍历到的数。最后将大根堆里的数存入数组返回即可。由于 C++ 语言中的堆(即优先队列)...原创 2020-03-20 19:24:46 · 103 阅读 · 0 评论 -
数据流中的中位数--使用python内置的heapq模块
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值 链接 方法一 使用大堆存储左边的值 使用小堆存储右边的值 0 <= 保证大堆数据的长度 - 小堆数据的长度 <=1 数据长度为奇数时, 中位数为大堆堆顶 在python中只能使用小堆 使用最大堆时存...原创 2020-04-12 21:40:34 · 160 阅读 · 0 评论