首页 > 代码库 > [PY3]——实现一个优先级队列

[PY3]——实现一个优先级队列

import heapqclass PriorityQueue:    def __init__(self):        self._queue=[]        self._index=0    def push(self,item,priority):        heapq.heappush(self._queue,(-priority,self._index,item))        self._index+=1    def pop(self):        return heapq.heappop(self._queue)[-1]class Item:    def __init__(self,name):        self.name=name    def __repr__(self):        return Item({!r}).format(self.name)
q=PriorityQueue()q.push(Item(foo),1)q.push(Item(bar),5)q.push(Item(spam),2)q.push(Item(grok),1)print(q.pop())print(q.pop())print(q.pop())print(q.pop())   Item(bar)   Item(spam)   Item(foo)   Item(grok)

 

参考文章

cookbook-python3-1.5-实现一个优先级队列

浅谈算法和数据结构: 五 优先级队列与堆排序

heap模块和堆排序

[PY3]——实现一个优先级队列