优先队列小堆优先代码
时间: 2024-03-16 21:40:03 浏览: 66
优先队列代码
优先队列是一种特殊的队列,其中每个元素都有一个优先级。小堆优先队列是一种常见的实现方式,它使用小堆数据结构来维护元素的优先级顺序。
以下是一个简单的小堆优先队列的代码示例:
```python
import heapq
class PriorityQueue:
def __init__(self):
self._queue = []
self._index = 0
def is_empty(self):
return len(self._queue) == 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]
```
在上述代码中,我们使用了Python内置的`heapq`模块来实现小堆。`_queue`列表用于存储元素,每个元素是一个三元组`(priority, index, item)`,其中`priority`表示优先级,`index`用于处理相同优先级的元素顺序,`item`是实际的元素值。
优先队列的操作包括:
- `is_empty()`:判断队列是否为空。
- `push(item, priority)`:将元素`item`插入队列,并指定其优先级`priority`。
- `pop()`:弹出并返回队列中优先级最高的元素。
阅读全文