讨论/《零起步学算法》 - 优先队列与堆/
《零起步学算法》 - 优先队列与堆
共 10 个回复

Java 的 PriorityQueue 很好用

6

python3优先队列有两个,heapPriorityQueue

import heap
from queue import PriorityQueue

然而,PriorityQueue的实现就是调用heap模块,只是基于Queue类进行了封装,加入了同步机制。
可惜的是,heap默认支持最小堆,也只支持最小堆。如果想用heap实现最大堆就很气,需要用取相反数的方法用最小堆实现最大堆。
如果觉得最大堆常用或者想要自定义比较规则,不如亲手基于heap封装一个类,使用lambda表达式或者装饰器来实现比较即可。
如果只是写写算法题,用heap就绰绰有余了。
heap源码传送门
PriorityQueue源码传送门
python topN max heap, use heapq or self implement?

3

队列操作peek是返回队列头部的元素,poll是出队。

2

C++的Priority_quque很好用

2


堆是一种经过排序的树形数据结构,每个节点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根节点的值最大(或者最小),且根节点的两个子树也是一个堆。由于堆的这个特性,常用来实现优先队列。



栈又名堆栈,是一种运算受限的线性表。只允许在栈顶插入和删除元素。栈顶是低位,栈底是高位。栈中没有元素时成为空栈,栈符合先进后出的原则(LIFO,Last in first out)

操作:push(入栈)、pop(出栈)


队列


队列也是一种运算受限的线性表。特殊之处在于它只允许在队列的前端(front,队头)进行删除操作,而在队列的后端(rear,对尾)进行插入操作。当队列中没有元素时,即front=rear,称为空队列。队列符合先进先出(FIFO,first in first out)原则

操作:offer(入队)、poll(出队)

2

打卡,真的是非常好的文章

1

感谢指正哈

1

1

+5

很好的复习资料,赞