首页 > 编程语言 > 详细

[算法] 优先队列

时间:2020-01-29 20:22:38      阅读:73      评论:0      收藏:0      [点我收藏+]

普通队列:先入先出

优先队列:依照元素优先级的大小取出数据

现实世界中,许多情况是可以插队的(根据权重)

 

应用:

游戏中AI优先攻击哪个敌人(根据经验高低、血多少等)

操作系统处理应用

 

在第N个元素中选出前M个元素

使用排序可在O(NlogN)内解决

使用优先队列可在O(NlogM)内解决(N和M相差越大优化越明显)

快速获取Top10最热门的搜索关键词(Top K问题)

 

求中位数

 

用不同的数据结构实现优先队列:

普通数组,入队O(1),出队O(n)

顺序数组,入队O(n),出队O(1)

堆的入队和出队的效率都是O(lgn)

对于总共N个请求,普通数组或顺序数组,最差情况O(n^2),而堆是O(nlgn)

 

堆是一种特殊的树,需满足:

1)是一颗完全二叉树

2)每个节点的值都必须大于等于(或小于等于)其子树中每个节点的值

[算法] 优先队列

原文:https://www.cnblogs.com/cxc1357/p/12142928.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!