【数据结构与算法】堆实现优先级队列

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

一.堆实现优先级队列的原理

堆就是可以将最大值或者最小值,每次取出,那么刚好可以进行排序,而我们的优先级队列,就是对于优先级最高的先进行出队,也就相当于是排序.

并且原来我们使用的是链队列来比较优先级,需要一个个的比较,如果我们采用堆,那么我们比较的次数就是log n,n为总的元素个数.
那么效率会高于链队列,所以我们采用对来实现优先级队列.

二.优先级队列结构体

在这里插入图片描述
用堆来实现优先级队列,完全就是堆的处理,只不过将堆数组的值改为队列的优先级就可以.

三.堆初始化

与堆的初始化无异.
在这里插入图片描述

遍历父节点:
在这里插入图片描述
向下比较调整:
在这里插入图片描述

四.入队

入队需要先判断是否已满
在这里插入图片描述
然后再进行插入:
在这里插入图片描述
然后插入后的数据,我们要进行向上比较:
在这里插入图片描述

五.出队

也是先判断是否为空:
在这里插入图片描述
然后进行数据删除:
在这里插入图片描述
同时对堆顶,进行向下调整.

六.销毁队列

有new就有delete进行销毁.
在这里插入图片描述

七.总结

用堆来实现优先级队列真是一种不错的选择!

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值