python中的堆佇列操作

2021-10-02 12:45:09 字數 1000 閱讀 8144

堆佇列是一棵二叉樹,並擁有如下特點:它的父節點的值小於或者等於它的任何子節點的值。

在python中對堆這種資料結構進行了模組化heapq

heapq.merge(*iterables):合併多個對排列後的列表,返回乙個迭代器來訪問所有的值。

heapq.nlargest(n,iterable,key=none):從資料集iterable中獲取n項的最大值,以列表形式返回。如果提供了key,則key是乙個比較函式,用來比較元素之間的值。

heapq.nsmallest(n,iterable,key=none):從資料集iterable中獲取n項的最小值,以列表形式返回。如果提供了key,則key是乙個比較函式,用於比較元素之間的值,相當於sorted(iterable,key=key)[:n]

import heapq

h =5

)2)8

)4)print)5

)2)8

)4)print

)print

)h =

5)2)

8)print4)

)#使用heapq.heapify(x)

h =[9,

8,7,

6,2,

4,5]

heapq.heapify(h)

print

(h)#使用函式heapq.heapreplace(heap, item)

heapq.heapify(h)

print

(heapq.heapreplace(h,1)

)print

(h)#使用heapq.merge(*iterables)

heapq.heapify(h)

l =[19,

11,3,

15,16]

heapq.heapify(l)

for i in heapq.merge(h,l)

:print

(i, end =

',')

堆(優先佇列)的基本操作

堆是一棵完全二叉樹,所以可以利用陣列來實現。以1號作為root,則對於陣列中的任意乙個i,其左兒子在 2 i 右兒子在 2 i 1 父親在 i 2 下面以最小堆為例,實現一些基本操作 define inf 0x3f3f3f3f define max 1005 int heap max heap 0 ...

堆(優先佇列,最大堆的基本操作,堆的例題)

1 堆 優先佇列 是一種特殊的 佇列 取出元素的順序是 依照元素的優先權 關鍵字 大小,而不是元素進入佇列的先後順序。2 堆的特性 1 結構性 用陣列表示的完全二叉樹 堆一定是完全二叉樹 2 有序性 任一結點的關鍵字是其子樹所有結點的最大值 或最小值 最大堆 maxheap 也稱 大頂堆 任一結點的...

STL中的堆操作

堆在我們做演算法時應該有映像吧,分為大根堆,小根堆。stl中的其實是對堆有實現的,使得我們可以直接拿來用。相關的函式是make heap push heap pop heap sort heap make heap make heap first,end,cmp 引數有3個,第乙個為堆建立堆的第乙個...