用堆在海量数据中找出最大或最小的k个数,效率非常高。
1、在一组数据中找出最小的k个数
解题思路:
要找出最小的k个数,我们可以先用这组数据中的k个数构建一棵“最大堆”,然后再将剩下的元素与堆顶元素相比。如果大于堆顶元素,则不做处理,继续向下比较。如果小于堆顶元素,则将堆顶元素与这个元素交换,然后再恢复堆序,继续向下比较。这样的话最后这个堆里面保存的就是最小的k个数。
例:在{10,16,18,12,11,13,15,17,14,19}里面找出最小的4个数
1、用前四个数构造一颗最大堆

本文介绍了如何使用堆数据结构在大量数据中快速找到最大的k个或最小的k个数。通过建立最大堆或最小堆,并进行比较、交换和调整,实现O(N*lgK)的时间复杂度。文中还提供了C++实现的代码示例。
最低0.47元/天 解锁文章
501

被折叠的 条评论
为什么被折叠?



