Python 堆(heap)的基本操作

2021-08-29 18:45:26 字數 1180 閱讀 2789

#python-堆(heap)的基本操作

import heapq #載入heap庫,heap指的是最小堆
使陣列轉化為堆

heapq.heapify(list)

heap = [1,3,4,2,6,8,9]

heapq.heapify(heap)

# heap = [1,2,4,3,6,8,9]

為heap增加元素

heap = [1,3,4,2,6,8,9]

# heap = [1,3,4,2,6,8,9,2]

刪除堆頂(即最小值)

heap = [1,3,4,2,6,8,9]

# heap = [3,2,4,9,6,8] #刪除堆頂後將堆尾放到堆頂,然後下沉

刪除最小值並新增新值

heapq.heapreplace(heap, item)

heap = [1,3,4,2,6,8,9]

heapq.heapreplace(heap, 4)

# heap = [3,2,4,4,6,8,9]#刪除堆頂後將新元素放到堆頂,然後下沉

查堆中最大n個數

heapq.nlargest (n, heap)

heap = [1,3,4,2,6,8,9]

result = heapq.nlargest (2, heap)

# result = [9,8]

查堆中最小n個數

heapq.nsmallest(n, heap) #查詢堆中的最小元素,n表示查詢元素個數

heap = [1,3,4,2,6,8,9]

result = heapq.nsmallest (2, heap)

# result = [1,2]

參考鏈結

堆(Heap)的實現

這次實現了堆,這個堆不是指系統堆疊的堆,是一種資料結構,見下圖 堆的本質就是乙個陣列 上圖中,紅色的是值,黑色的是下標 簡單的來說就是把乙個陣列看成是二叉樹,就像上圖 大堆和小堆分別是指根節點比孩子節點的值大或者是小,看了上圖之後就可以發現,父親節點和孩子節點之間下表的關係,parnet child...

堆 Heap 的實現

什麼是堆?優先佇列 opriority queue 特殊的 佇列 取出元素的順序是依照元素的優先權 關鍵字 大小,而不是元素進入佇列的先後順序。堆有兩大特性 1,結構性 是一顆完全二叉樹。2,有序性 每個葉子結點到根結點都是有序的,如果是公升序,那麼就是最大堆,否則為最小堆。這些是堆 下面的不是堆 ...

堆(Heap)的實現

這次實現了堆,這個堆不是指系統堆疊的堆,是一種資料結構,見下圖 堆的本質就是乙個陣列 上圖中,紅色的是值,黑色的是下標 簡單的來說就是把乙個陣列看成是二叉樹,就像上圖 大堆和小堆分別是指根節點比孩子節點的值大或者是小,看了上圖之後就可以發現,父親節點和孩子節點之間下表的關係,parnet child...