先介紹兩個動作方法。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個...