堆实现优先级队列
- 一.堆实现优先级队列的原理
- 二.优先级队列结构体
- 三.堆初始化
- 四.入队
- 五.出队
- 六.销毁队列
- 七.总结
一.堆实现优先级队列的原理
堆就是可以将最大值或者最小值,每次取出,那么刚好可以进行排序,而我们的优先级队列,就是对于优先级最高的先进行出队,也就相当于是排序.
并且原来我们使用的是链队列来比较优先级,需要一个个的比较,如果我们采用堆,那么我们比较的次数就是log n,n为总的元素个数.
那么效率会高于链队列,所以我们采用对来实现优先级队列.
二.优先级队列结构体
用堆来实现优先级队列,完全就是堆的处理,只不过将堆数组的值改为队列的优先级就可以.
三.堆初始化
与堆的初始化无异.
遍历父节点:
向下比较调整:
四.入队
入队需要先判断是否已满
然后再进行插入:
然后插入后的数据,我们要进行向上比较:
五.出队
也是先判断是否为空:
然后进行数据删除:
同时对堆顶,进行向下调整.
六.销毁队列
有new就有delete进行销毁.
七.总结
用堆来实现优先级队列真是一种不错的选择!