包含IndexedPriorityQueue和简单PriorityQueue的PrioryQueue库
pyqueues的Python项目详细描述
pyqueues系统
包含索引优先级队列和简单优先级队列的优先级队列库。在
——安装:
使用克隆此存储库,
https://github.com/abecus/Queue.git
或者,使用pip安装,
pip install pyqueues
适用于python3.x和PyPy。在
概述
索引优先级队列和队列都被实现为最小二进制堆,以将其用作最大堆,或使用自定义键将值作为元组传递到堆中,例如(key,value)。时间的复杂性是
- 在
peek最高优先级元素:O(1)
在 - 在
pop最高优先级元素:O(logn)
在 - 在
推送新元素:O(logn)
在
另外,对于索引优先级队列
- 在
按键查找任何项:O(1)
在 - 在
按键删除元素:O(logn)
在 - 在
按键更新元素:O(logn)
在
使用
from pyqueues.indexedPriorityQueue import IndexedPriorityQueue
from pyqueues.heap import heapify, heapPop, heapPush
- 在
要修复列表(不更改原始列表,而是在内部修复)
^{pr2}$ 在 - 在
要将项目推送到优先级队列中
在pq.push(2) pq.push(-1)
- 在
使用key更新项(我们可以使用dict通过将值映射到优先级队列的arrSize arrtibute来跟踪值的键)
在pq.update(pq.arrSize-1, 100) # updates -1 to 100 pq.update(pq.arrSize-2, -1) # updates 2 to -1
“同样地使用pq.递减键()和pq.增加键我们知道更新方法所需的时间的一半(当我们知道更新方法所需的一半时)
- 在
要从优先级队列中删除值
在pq.remove(pq.arrSize-1) # removes 100
- 在
要弹出最高优先级元素
在pq.pop() # pops -1
许可证
麻省理工学院执照
版权所有(c)2020 abecus
兹免费准许任何人取得复制品 本软件及其相关文档文件(“软件”)的 在软件中不受限制,包括但不限于权利 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的使用者 根据以下条件提供:
上述版权声明和本许可声明应包括在所有 软件的副本或大部分。在
本软件按“原样”提供,无任何形式的保证,明示或 包括但不限于适销性保证, 特定目的的适用性和非侵犯性。在任何情况下 作者或版权持有人应对任何索赔、损害赔偿或其他 无论是在合同诉讼、侵权诉讼或其他诉讼中,由以下原因引起的责任:, 与软件、软件的使用或其他交易有关 软件。在
- 项目
标签: