Python堆队列算法

堆数据结构可用于表示优先级队列。在python中,它可用于heapq模块。在这里,它创建了一个最小堆。因此,当优先级为1时,它表示最高优先级。插入新元素时,堆结构将更新。

要使用此模块,我们应该使用-导入它

import heapq

有一些与堆相关的操作。这些是-

方法heapq.heapify(iterable)

它用于将可迭代的数据集转换为堆数据结构。

方法heapq.heappush(heap,element)

此方法用于将元素插入堆中。之后,重新堆放整个堆结构。

方法heapq.heappop(heap)

此方法用于从堆顶部返回和删除元素,并对其余元素执行heapify。

方法heapq.heappushpop(heap,element)

此方法用于在一个语句中插入和弹出元素。

方法heapq.heapreplace(heap,element)

此方法用于在一个语句中插入和弹出元素。它从堆的根中删除元素,然后将元素插入堆中。

方法heapq.nlargest(n,可迭代,键=无)

此方法用于从堆中返回n个最大的元素。

方法heapq.nsmallest(n,可迭代,键=无)

此方法用于从堆中返回n个最小的元素。

范例程式码

import heapq
my_list = [58, 41, 12, 17, 89, 65, 23, 20, 10, 16, 17, 19]
heapq.heapify(my_list)
print(my_list)
heapq.heappush(my_list, 7)
print(my_list)
print('Popped Element: ' + str(heapq.heappop(my_list)))
print(my_list)
new_iter = list()new_iter = heapq.nlargest(4, my_list)
print(new_iter)

输出结果

[10, 16, 12, 17, 17, 19, 23, 20, 41, 89, 58, 65]
[7, 16, 10, 17, 17, 12, 23, 20, 41, 89, 58, 65, 19]
Popped Element: 7
[10, 16, 12, 17, 17, 19, 23, 20, 41, 89, 58, 65]
[89, 65, 58, 41]