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]