二叉堆實現優先佇列

2021-10-10 01:12:31 字數 1060 閱讀 5669

最大堆:

每個節點都大於等於它的兩個子節點

堆的操作:

優先佇列

**框架

public

class

maxpq

comparable

>

/* 返回當前佇列中最大元素 */

public key max()

/* 插入元素 e */

public

void

insert

(key e)

/* 刪除並返回當前佇列中最大元素 */

public key delmax()

/* 上浮第 k 個元素,以維護最大堆性質 */

private

void

swim

(int k)

/* 下沉第 k 個元素,以維護最大堆性質 */

private

void

sink

(int k)

/* 交換陣列的兩個元素 */

private

void

exch

(int i,

int j)

/* pq[i] 是否比 pq[j] 小? */

private

boolean

less

(int i,

int j)

/* 還有 left, right, parent 三個方法 */

}

實現swim
private

void

swim

(int k)

}

實現sink
private

void

sink

(int k)

}

實現刪除
private key delmax()

實現插入
private

void

insert

(key e)

優先佇列 二叉堆

優先佇列 二叉堆 二叉堆是一棵完全二叉樹,最大堆 最小堆 中,所有根節點的鍵值都要比對應的子樹要大 小 由於是完全二叉樹,所以儲存結構可以採用陣列。最大堆的建立 include include include include include include define inf 0x3f3f3f3f...

二叉堆 優先佇列

堆 堆常見的二叉堆,這種資料結構有大根堆和小根堆。對於大根堆來說,每個父節點是大於他的兩個孩子節點的。也就是最大值在根節點。小根堆與之相反。如果堆用陣列實現的話,如果從1開始計數 因為0的位置可以在上慮或者下慮的時候做個暫存的位置 那麼乙個孩子的父節點是i 2 如果知道了父節點,而左孩子的節點位置為...

二叉堆(優先佇列)

0.1 本文總結於 資料結構與演算法分析,但源 均為原創 旨在理清二叉堆 優先佇列 堆的其他操作及其應用,以便讓朋友些知道為什麼要學習優先佇列 二叉堆 1.0 優先佇列定義 優先佇列是允許至少下列兩種操作的資料結構,insert 插入 它的工作時顯而易見的,以及 deletemin 刪除最小者 它的...