堆的概念

堆是数据结构的一种,它和顺序结构和链式结构相同,都有自己的合适的应用场景。

利用堆,可以实现优先队列

队列:先进先出,一般来说是按照时间来排序。

优先队列:按照优先级别进行,先后的调用,优先级别高的优先被调用,并且我们的队列是动态改变的,在什么时间都有可能有新的请求入队,而且某个请求的优先级可能也会发生改变。

在n个元素中,选出前m个元素,如果采用排序的话最好的性能也要NlogN,但是如果我们采用优先队列的话,它的性能就能被优化到NlogM。


优先队列的实现

入队 出队
普通数组 O(1) O(n)
顺序数组 O(n) O(1)
O(lgn) O(lgn)

这样我们整个用堆实现的优先队列的级别就是O(lgn)级别了,而用数组实现的则是O(n)级别。

好了,大概介绍了什么是堆,以及堆的作用,下面我的文章还会介绍如何实现一个堆和堆的一些算法,想深入了解的可以看一下我下面的文章。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http://fangjian0423.github.io/2016/04/09/heap-heapsort/ 堆...
    一树梨花白阅读 7,799评论 0 0
  • 一、堆的概念 概念:堆作为一种数据结构是一种完全二叉树。所谓完全二叉树,可能有些书本有很晦涩难懂的概念。就我的理解...
    曲谐_阅读 11,384评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,963评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,034评论 25 709
  • 继续说说读毛选的心得体会: 现实生活中的挑战通常不是问题怎么解决,而是问题在哪里。 现实中遇到问题了去读读毛选,看...
    马唐阅读 6,915评论 0 4

友情链接更多精彩内容