数据结构与算法 优先队列

一.优先队列模型

优先队列(Priority Queue)是1种特殊的队列,通常使用堆来实现.在优先队列中,元素会被赋予优先级,具有最高优先级的元素最先被删除(first in, largest out).优先队列的基本操作包括插入(Insert;在队尾插入1个元素)和删除(DeleteMaxPriority;删除优先级最高的元素)

二.实现

以下假设最小的元素具有最高优先级

1.单链表实现:

使用1个单链表实现优先队列又分为2种思路:
①始终在表头执行插入操作,这样Insert()的时间复杂度为O(1)DeleteMaxPriority()的时间复杂度为O(N)
②始终让链表保持有序(如从小到大),这样Insert()的时间复杂度为O(N)DeleteMaxPriority()的时间复杂度为O(1)
由于DeleteMaxPriority()的操作次数不会多于Insert()的操作次数,思路①可能更合适

2.二叉查找树实现:

使用二叉查找树实现优先队列,Insert()/DeleteMaxPriority()的时间复杂度均为O(log N).另外,通过使用平衡树可以改善log N前的系数

三.应用

①操作系统
②外部排序,堆排序
③贪婪算法
...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值