欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 【数据结构与算法】堆实现优先级队列

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

2024/11/29 21:08:18 来源:https://blog.csdn.net/qq_74047911/article/details/140895162  浏览:    关键词:【数据结构与算法】堆实现优先级队列

堆实现优先级队列

  • 一.堆实现优先级队列的原理
  • 二.优先级队列结构体
  • 三.堆初始化
  • 四.入队
  • 五.出队
  • 六.销毁队列
  • 七.总结

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

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

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

二.优先级队列结构体

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

三.堆初始化

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

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

四.入队

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

五.出队

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

六.销毁队列

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

七.总结

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com