python
自定义优先队列
优先队列内部默认实现的是小根堆,具有的操作主要有:
向队列中添加元素 Queue.put(obj),每添加一个元素优先队列内部就会进行调整成最小堆;
从队列中获取元素 Queue.get(),每取出一个元素队列内部就会进行调整;
队列判空 Queue.empty()
队列大小 Queue.qsize()
队列存储的元素是数字:
>>> from queue import PriorityQueue
>>> q = PriorityQueue()
>>> q.put(1)
>>> q.put(2)
>>> q.put(3)
>>> while not q.empty():
... print(q.get())
自定义比较
from queue import PriorityQueue
class comobj():
def __init__(self, key, name, sex):
# 优先级
self.key = key
# 具体的属性值,可以用类封装起来
self.name = name
self.sex = sex
def __lt__(self, other):# 这里的比较规则是:先根据key的大小判断,如果key相等则根据name判断
# 最后都形成小根堆