演算法(第4版) Chapter 2 4 優先佇列

2021-09-17 03:08:23 字數 3739 閱讀 4803

algorithms fourth edition

written by robert sedgewick & kevin wayne

translated by 謝路雲

chapter 2 section 4 優先佇列

定義:當一棵二叉樹的每個結點都大於等於它的兩個子節點時,它稱為堆有序

相應地,在堆有序的二叉樹中,每個結點都小於等於它的父節點。從任意結點向上,我們都能得到一列非遞減的元素;從任意結點向下,我們都能得到一列非遞增的元素。特別的: 根結點是堆有序的二叉樹中的最大結點。

二叉堆:就是堆有序的完全二叉樹,元素在陣列中按照層級儲存(一層一層的放入陣列中,不用陣列的第乙個元素,因為0*2=0,遞推關係不合適)。下面簡稱堆。

堆中:位置k的結點的父節點的位置為 ⌊k/2⌋子節點的位置分別是 2k 和 2k+1

乙個結論:一棵大小為n的完全二叉樹的高度為 ⌊lgn⌋

用陣列(堆)實現的完全二叉樹是很嚴格的,但它的靈活性足以使我們高效地實現優先佇列。

我們用陣列pq[n+1]來表示大小為n的堆,我們不使用pq[0]。

private void swim(int k) 

}

private void sink(int k) 

}

簡易版

public class maxpq> 

public boolean isempty()

public int size()

public void insert(key v)

public key delmax()

// see above

private boolean less(int i, int j)

private void exch(int i, int j)

private void swim(int k)

private void sink(int k)

}

完整版

簡易版

public class indexminpq> implements iterable

public void insert(int i, key key)

private void swim(int k)

}private void exch(int i, int j)

public int delmin()

public void changekey(int i, key key)

}

完整版

public class indexminpq> implements iterable

public boolean isempty()

public boolean contains(int i)

public int size()

public void insert(int i, key key)

public int minindex()

public key minkey()

public int delmin()

public key keyof(int i)

public void changekey(int i, key key)

public void change(int i, key key)

public void decreasekey(int i, key key)

public void increasekey(int i, key key)

public void delete(int i)

private boolean greater(int i, int j)

private void exch(int i, int j)

private void swim(int k)

}private void sink(int k)

}public iteratoriterator()

private class heapiterator implements iterator

public boolean hasnext()

public void remove()

public integer next() }}

演算法(第4版) Chapter 1

algorithms fourth edition written by robert sedgewick kevin wayne translated by 謝路雲 public static int indexof int key,int a return 1 exe 1.1.14 編寫乙個靜態...

演算法(第4版) Chapter 4 4 最短路徑

algorithms fourth edition written by robert sedgewick kevin wayne translated by 謝路雲 chapter 4 section 4 最短路徑 兩條路徑 s w s v v w 比較哪一條路徑更短,記錄更短的那個邊。若 路徑1...

演算法(第4版) Chapter 4 3 最小生成樹

algorithms fourth edition written by robert sedgewick kevin wayne translated by 謝路雲 chapter 4 section 3 最小生成樹 定義約定 初始狀態下所有邊均為灰色,找到一種切分,它產生的橫切邊均不為黑色。將它...