简介:优先级队列是一种数据结构,其中元素具有优先级,优先级最高的元素最先出队。下面是一个简单的示例,演示如何使用数组实现优先级队列。
在实现优先级队列时,常用的数据结构有堆和斐波那契堆。但由于题目要求使用数组实现,我们将采用一种基于数组的简单实现方法。
首先,定义一个数组来存储元素,并使用一个额外的数组来存储每个元素的优先级。然后,根据优先级数组中的值来重新排列原数组,使得优先级最高的元素位于数组的开头。
以下是一个示例代码:
class PriorityQueue:def __init__(self):self.array = []self.priority = []def insert(self, item, priority):self.array.append(item)self.priority.append(priority)self.sort()def remove_max(self):if not self.array:return Nonemax_index = 0for i in range(1, len(self.array)):if self.priority[i] > self.priority[max_index]:max_index = imax_item = self.array[max_index]self.array = self.array[:max_index] + self.array[max_index + 1:]self.priority = self.priority[:max_index] + self.priority[max_index + 1:]return max_itemdef sort(self):while True:swapped = Falsefor i in range(1, len(self.array)):if self.priority[i - 1] < self.priority[i]:self.array[i - 1], self.array[i] = self.array[i], self.array[i - 1]self.priority[i - 1], self.priority[i] = self.priority[i], self.priority[i - 1]swapped = Trueif not swapped:break
使用示例:
```python
pq = PriorityQueue()
pq.insert(‘item1’, 3)
pq.insert(‘item2’, 1)
pq.insert(‘item3’, 2)
print(pq.remove_max()) # 输出:’item2’(优先级最高)
print(pq.remove_max()) # 输出:’item3’(优先级次高)
print(pq.remove_max()) # 输出:’item1’(优先级最低)