首页 > 代码库 > [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]——实现一个优先级队列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。