演算法 第二章 優先佇列

2021-07-27 17:37:18 字數 986 閱讀 9034

先介紹兩個動作方法。1.下沉 2.上浮

1. 下沉 

//下沉 k指的是父節點

private

void

sink(int k)

}

2.上浮

//上浮

private

void

swim(int k)

}

優先佇列:是一種抽象資料型別。api 見p195, 最重要的操作就是 :

1. 刪除最大元素。

2. 插入元素。

具體實現如下:

//僅僅實現了  刪除最大的元素(返回最大元素),和使堆有序化

public

class maxpq>

public boolean isempty()

public

intsize()

public

void

insert(key v)

/** 刪除元素

* */

public key delmax()

//下沉 k指的是父節點

private

void

sink(int k)

}//pq[v]小,pq[m]大

public boolean less(int v, int m )

}

//交換

public void exch(int i, int j)

最後:講一下堆排序;

public

static

void

sort(comparable a)

//因為1為堆的根節點,為最大。所以先把它(最大的元素)放在最後。sink()再使之成為有序堆。反覆直到為空。

while(n>1)

}

第二章 演算法

本章內容了解即可。如果大家對資料結構完全不了解,我建議你先去看一下b站上郝斌老師的課程。演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的優先序列,並且每條指令表示乙個或多個操作。只聽資料結構課程,當然可以,但是聽完後你可能沒有什麼感覺,因為你不知道他是幹嘛的。但是如果配合演算法來講解,你就...

第二章 演算法

一 演算法定義 二 演算法的時間複雜度與空間複雜度 1.定義 演算法是解決待定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。2.演算法的特性 演算法有五個基本特性 輸入 輸出 有窮性 確定性和可行性。演算法在一定條件下,只有一條執行路徑,相同的輸入只能有唯一的輸...

演算法第二章

小結 第二章主要內容是遞迴與分治思想。遞迴演算法是乙個直接或間接地呼叫自己的演算法。有典型的遞迴例子 階乘函式 斐波那契數列還有漢諾塔等。遞迴演算法的優點是結構清晰,可讀性強,缺點是執行效率低,耗費的計算時間和占用的儲存空間都比非遞迴演算法要多。而分治法的基本思想是將要求解的較大規模的問題分割成k個...