python標準庫 heapq堆佇列演算法

2021-10-11 09:17:12 字數 626 閱讀 9458

這個模組提供了堆佇列演算法的實現,也稱為優先佇列演算法。這個模組最常用的操作是將乙個列表轉換為乙個堆,預設是小根堆(它的每個父節點的值都只會小於或所有孩子節點的值),而且常用的主要有三個方法:

有的題目要求為大根堆這個時候在儲存的時候可以將某個元素儲存為負數,這樣相當於維護的是乙個大根堆

其餘的方法可以參照官方的標準庫文件,並且當堆中的元素為元組的時候會按照元組的第乙個元素來維持小根堆,下面是具體的例子:

import heapq

if __name__ == '__main__':

# 要建立乙個堆, 可以使用list來初始化為, 或者可以通過乙個函式heapify(), 來把乙個list轉換成堆.

h =

# 往堆中加入元素並且保證堆的不變性, 當加入堆中的元素為元組型別的時候按照元組的第乙個引數維持堆的不變性

while len(h):

# 彈出並返回heap的最小的元素, 保持堆的不變性

h = [10, 6, 8, 3, 4, 1, 2, 7, 9, 5]

# 將list轉換成堆, 原地, 線性時間內

heapq.heapify(h)

print(h)

Python 標準模組堆heapq詳解

import heapq nums 8,2,23,1,7,4,18,23,42,37,2 heapq.heapify 將list x 轉換成堆,原地,線性時間內。heapq.heapify nums print nums 將 item 的值加入 heap 中,保持堆的不變性。print nums 彈...

python 堆操作 heapq庫

這個模組 build in 實現了乙個堆的資料結構,完美的解決了top k問題,以後解決top k問題的時候,直接把這個模組拿來用就可以了 注意,預設的heap是乙個小頂堆!heapq模組提供了如下幾個函式 heapq.heapify x 將列表x進行堆調整,預設的是小頂堆 heapq.merge ...

Python標準庫 heapq 堆排序演算法

python標準庫 heapq 堆排序演算法 作用 headpq 模組實現了乙個適用於 python 列表的最小堆排序演算法。python 版本 2.3 版本中新增,並在 2.5 版本中做了補充 堆 heap 是乙個樹形資料結構,其中子節點與父節點是一種有序關係。二叉堆 binary heap 可以...