精品熟女碰碰人人a久久,多姿,欧美欧美a v日韩中文字幕,日本福利片秋霞国产午夜,欧美成人禁片在线观看

Python 堆

python 堆

堆是一種特殊的樹結構,其中每個父節點小于或等于其子節點。然后它被稱為min heap。如果每個父節點大于或等于其子節點,則稱它為最大堆。實施優先級隊列是非常有用的,在該隊列中,具有較高權重的隊列項目在處理中具有更高的優先級。有關堆的詳細討論,請訪問我們的網站。如果你是頭部數據結構的新手,請先研究它。在本章中,我們將看到使用python實現堆數據結構。

 

創建一個堆

堆是通過使用python內建的名為heapq的庫創建的。該庫具有對堆數據結構進行各種操作的相關功能。以下是這些功能的列表。

  • heapify - 此函數將常規列表轉換為堆。在結果堆中,最小的元素被推到索引位置0.但其余的數據元素不一定被排序。
  • heappush - 這個函數在堆中添加一個元素而不改變當前堆。
  • heappop - 該函數返回堆中最小的數據元素。
  • heapreplace - 該函數用函數中提供的新值替換最小的數據元素。

 

創建一個堆

通過簡單地使用具有heapify函數的元素列表來創建堆。在下面的例子中,我們提供了一個元素列表,heapify函數重新排列了元素到最初位置的元素。

import heapq

h = [21,1,45,78,3,5]
# use heapify to rearrange the elements
heapq.heapify(h)
print(h)

當上面的代碼被執行時,它會產生以下結果 -

[1, 3, 5, 78, 21, 45]

 

插入堆

將數據元素插入堆總是在最后一個索引處添加元素。但是,只有在值最小的情況下,您才可以再次應用heapify函數將新添加的元素添加到第一個索引。在下面的例子中,我們插入數字8。

import heapq
h = [21,1,45,78,3,5]
# covert to a heap
heapq.heapify(h)
print(h)
# add element
heapq.heappush(h,8)
print(h)

當上面的代碼被執行時,它會產生以下結果 -

[1, 3, 5, 78, 21, 45]
[1, 3, 5, 78, 21, 45, 8]

 

從堆中移除

您可以使用此功能在第一個索引處移除元素。在下面的例子中,函數將始終刪除索引位置1處的元素。

import heapq

h = [21,1,45,78,3,5]
# create the heap

heapq.heapify(h)
print(h)

# remove element from the heap
heapq.heappop(h)

print(h)

當上面的代碼被執行時,它會產生以下結果 -

[1, 3, 5, 78, 21, 45]
[3, 21, 5, 78, 45]

 

替換堆

heapreplace函數總是刪除堆中最小的元素,并在未被任何順序修復的地方插入新的傳入元素。

import heapq

h = [21,1,45,78,3,5]
# create the heap

heapq.heapify(h)
print(h)

# replace an element
heapq.heapreplace(h,6)
print(h)


[1, 3, 5, 78, 21, 45]
[3, 6, 5, 78, 21, 45]

下一節:python 圖形

python 數據結構

相關文章