python 手动实现一个 优先级队列
class PriorityQueue: """优先级队列""" def __init__(self): """初始化""" self._index = 0 self._queue = [] def push(self,item,priority): """向self._queue添加一个元素,并按-priority的大小进行堆排序""" heapq.heappush(self._queue,(-priority,self._index,item)) self._index+=1 def pop(self): """pop出self._queue中最大的的元素""" return heapq.heappop(self._queue)[-1] class Item(): def __init__(self,name): self.name = name def __repr__(self): return "Item('%s')"%self.name if __name__ == '__main__': q = PriorityQueue() q.push(Item('foo'), 1) q.push(Item('bar'), 5) q.push(Item('spam'), 4) q.push(Item('grok'), 1) print(q.pop())
运行结果
Item('bar') Item('spam') Item('foo')
浙公网安备 33010602011771号