网站首页 > java教程 正文
1.什么是优先队列
- 优先级队列是一种抽象数据类型,类似于常规队列或堆栈数据结构,但每个元素还具有与之关联的“优先级”。
- 在优先级队列中,优先级高的元素先于优先级低的元素提供。
- 如果两个元素具有相同的优先级,则将根据其在队列中的顺序为其提供服务。
2. Python中的优先级队列实现
以下python程序使用该heapq模块实现简单的优先级队列:
PriorityQueue.py
import heapq
class 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]
3. Python优先级队列示例
让我们看一个如何使用上面创建的优先级队列的例子。
example.py
class Item:
def __init__(self, name):
self.name = name
def __repr__(self):
return 'Item({!r})'.format(self.name)
>>> q = PriorityQueue()
>>> q.push(Item('how'), 1)
>>> q.push(Item('to'), 5)
>>> q.push(Item('do'), 4)
>>> q.push(Item('in'), 2)
>>> q.push(Item('java'), 1)
>>> q.pop()
Item('to') #5
>>> q.pop()
Item('do') #4
>>> q.pop()
Item('in') #2
>>> q.pop()
Item('how') #1
>>> q.pop()
Item('java') #1
学习愉快!
- Python基础教程
- 在SublimeEditor中配置Python环境
- Python代码中添加注释
- Python中的变量的使用
- Python中的数据类型
- Python中的关键字
- Python字符串操作
- Python中的list操作
- Python中的Tuple操作
- Pythonmax()和min()–在列表或数组中查找最大值和最小值
- Python找到最大的N个(前N个)或最小的N个项目
- Python读写CSV文件
- Python中使用httplib2–HTTPGET和POST示例
- Python将tuple开箱为变量或参数
- Python开箱Tuple–太多值无法解压
- Pythonmultidict示例–将单个键映射到字典中的多个值
- PythonOrderedDict–有序字典
- Python字典交集–比较两个字典
- Python优先级队列示例
作者:分布式编程 出处:https://zthinker.com/ 如果你喜欢本文,请长按二维码,关注 分布式编程 .
- 上一篇: 读 CSV/TXT 的报表怎么做分页查询?
- 下一篇: Oracle查询语句,你知道几个?(下)
猜你喜欢
- 2024-11-24 给R语言读取Excel表的能力
- 2024-11-24 jmeter 不务正业,干起了可变接口、动态参数自动化测试
- 2024-11-24 java开发工具IntelliJ IDEA全新版本V2022.2正式发布(二)
- 2024-11-24 把JSON/CSV文件打造成MySQL数据库
- 2024-11-24 (Python基础教程之四)Python中的变量的使用
- 2024-11-24 应大家需要,Java常用开发工具汇总来了
- 2024-11-24 MySQL实战 | MySQL逻辑架构—一条查询SQL是如何执行的
- 2024-11-24 Oracle查询语句,你知道几个?(下)
- 2024-11-24 读 CSV/TXT 的报表怎么做分页查询?
- 2024-11-24 90%测试猿都想学的Jmeter技能,你get吗?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)