堆 求最数大最小前k个sh
来源:互联网 发布:windows ndk下载 编辑:程序博客网 时间:2024/06/07 17:28
用堆在海量数据中找出最大或最小的k个数,效率非常高。
1、在一组数据中找出最小的k个数
解题思路:
要找出最小的k个数,我们可以先用这组数据中的k个数构建一棵“最大堆”,然后再将剩下的元素与堆顶元素相比。如果大于堆顶元素,则不做处理,继续向下比较。如果小于堆顶元素,则将堆顶元素与这个元素交换,然后再恢复堆序,继续向下比较。这样的话最后这个堆里面保存的就是最小的k个数。
例:在{10,16,18,12,11,13,15,17,14,19}里面找出最小的4个数
1、用前四个数构造一颗最大堆
(2、用剩下的数与堆顶元素进行比较,如图:
2、在一组堆中找出最大的前k个数
与找最小的数是相同的道理,不过找最大的数时要建立一个k个数的最小堆。
时间复杂度分析:
建立一个k个数的堆:O(k*lgk)
向后比较:O((N-k)*lgk)
时间复杂度为:O(N*lgK)
阅读全文
0 0
- 堆 求最数大最小前k个sh
- 寻找前k个最小元素——用最小堆实现…
- 寻找数组中前K个最小的数(Kth smallest element)---(堆排序的应用)
- 三.最小堆统计文章中频率前K个最高的词汇
- 堆处理海量数据----求前k个最小的数--时间复杂度(n * log k)
- 堆排序中求前K个最小数
- 找出数组中前K小的值&最小堆
- 利用堆求最大或最小的前k个数
- 实现数组获取前K个最小数
- 电话面试----关于前k个最小数的问题
- 用堆排序实现查找最小的K个元素
- 堆排序 选取最小的k个值
- 查找最小的K个元素-使用最大堆
- 查找最小的K个元素,使用最大堆。
- 查找最小的K个元素,使用最大堆。
- 寻找最小的k个数(先快速排序,然后输出前k个元素)
- UVA 11997 K Smallest Sums(多路归并求前k个最小和的值)
- 查找最小的k个元素(堆处理和非堆处理)
- zookeeper的环境搭建
- LVS系列—关于arp_ingnone和arp_announce的相关说明
- CSU-ACM2017暑假集训2-二分搜索 E
- Waiting for table flush 阻塞查询的问题
- html5本地存储localStorage 存储json对象存储格式问题
- 堆 求最数大最小前k个sh
- 结构体和函数指针实现加减乘除
- 加密算法
- eclipse里自动排版快捷键ctrl+shift+ f 在win10系统下失效
- 统计学习方法笔记十一----终结篇
- zookeeper使用(二)--常用命令及在java中基本操作
- HDU1075 What Are You Talking About【MAP】
- Smarty与自定义Smarty
- Hadoop streaming编写mapper与reducer