堆的应用

作者: 二毛_220d | 来源:发表于2019-02-01 22:39 被阅读41次

堆的应用一:优先级队列

将优先级的之分的数据存入堆中(小顶堆或者大顶堆),堆顶即优先级最搞的数据,当需要的时候直接取堆顶,然后堆顶补充下一优先级数据,由于堆堆顶插入或者删除数据时间复杂度都是O(logn),所以效率很高。

  • 合并有序小文件
    加入由100个小文件,每个文件中存放的都是一些有序的字符串片段,如果要合并成一个大文件,用常规的数组取字符串需要遍历整个数组,若将从小文件中取出来的字符串放到小顶堆中,每次取堆顶字符串然后删除,效率提高。
  • 高性能定时器
    我们按照任务设定的执行时间,将这些任务存储在优选级队列中,队列首部(也就是小顶堆的堆顶)存储的是最先执行的任务。

堆的应用二:利用堆求Top k

我们可以维护一个大小为K的小顶堆,顺序遍历数组,从数组中取出取数据与堆顶元素比较。如果比堆顶元素大,我们就把堆顶元素删除,并且将这个元素插入到堆中;如果比堆顶元素小,则不做处理,继续遍历数组。这样等数组中的数据都遍历完之后,堆中的数据就是前K 大数据了。

堆的应用三:利用堆求中位数

我们需要维护两个堆,一个大顶堆,一个小顶堆。大顶堆中存储前半部分数据,小顶堆中存储后半部分数据,且小顶堆中的数据都大于大顶堆中的数据。


图1

相关文章

  • 堆 - 堆的应用

    堆有三个典型的应用场景:实现优先队列、求 Top K 、求中位数 实现优先队列 优先队列:队列的性质是先进先出,但...

  • 堆的应用

    堆排序 100个亿数中找出最小的前k个数(海量数据 Top k 问题)-->建大堆 100个亿数中找出最大的前k个...

  • 堆的应用

    1. 堆的应用一:优先级队列 优先级队列,顾名思义,它首先应该是一个队列。队列最大的特性就是先进先出,而在优先级队...

  • 堆的应用

    堆的应用一:优先级队列 将优先级的之分的数据存入堆中(小顶堆或者大顶堆),堆顶即优先级最搞的数据,当需要的时候直接...

  • 堆的应用

    堆的应用一:优先级队列 优先级队列,顾名思义,它首先应该是一个队列。队列最大的特性就是先进先出。不过,在优先级队列...

  • 堆结构的应用

    1.随时找到数据流的中位数 【题目】有一个源源不断地吐出整数的数据流,假设你有足够的空间来保存吐出的数。请设计一个...

  • 堆及其应用

    理解堆 堆,言简意赅,是一种数据结构,它是一种特殊的树,满足以下两点: 1:堆是一钟完全二叉树; 2:堆中的每一个...

  • 图解堆结构、堆排序及堆的应用

    前言 上一次我们介绍了选择类排序中的简单选择排序,简单归简单,但是时间复杂度是O(n^2),这次我们介绍另一种时间...

  • 小根堆的应用2

    思路:小根堆的应用

  • 小根堆的应用1

    思路:利用小根堆实现

网友评论

    本文标题:堆的应用

    本文链接:https://www.haomeiwen.com/subject/xvfjsqtx.html