這一章2個事情:1.決策樹。2.三種線性排序。
關於決策樹:
1.決策樹其實是對前面的堆排序,快排等是最優的比較演算法的證明。
2.重要結論,定理8.1證明了任意乙個比較演算法在最壞情況下都需要做ω(n lg n)次的比較。
3.這一節其實沒什麼內容,就是一點基本的概念,以及了解比較演算法可以通過轉換為決策樹這個模型去理解。
關於3種線性排序:
1.計數排序:
基本思想:對每乙個輸入元素x,確定出小於x的元素個數。
適用範圍:適用於輸入是由小範圍的整數構成的序列。
穩定性:演算法是穩定的。
**如下:
public class count_sort
}}簡單說,傳入待排陣列a,而c[i]陣列則記錄<=i的元素個數,b陣列則是重新要輸出的排序陣列。
2.基數排序:
基本思想:按組成關鍵字的各個位的值來實現排序的。
排序方式:
排序方式:lsd 由右向左排; msd 由左向右排
穩定性:演算法是穩定的。
來個圖看看
這個書上只寫了個偽**,我也就不寫了,總之,你先理解這個過程再說。
3.桶排序
桶排序就是剛才的基數變成了n個桶,書上就是把小數點後第一位,相應放進乙個桶,然後,在乙個桶的元素,連線成乙個鍊錶,內部用插入法排序。
具體的實現,可以參照我以前的資料結構的桶排序。
演算法導論第8章習題
前面的排序都是基於比較排序,有時候不需要比較也可以排序。關鍵是那些東西有乙個好的表示,比如說整數。用decision tree證明,omega n lg n 是所有比較排序演算法的下界。決策樹中間節點表示比較的兩個東西,葉子節點表示元素的乙個置換,決策樹的每條邊表示這個演算法在這個節點獲得的比較資訊...
演算法導論 第8章 線性時間排序
比較排序指在排序的最終結果各元素的次序依賴於它們之間的比較的排序演算法。在最壞情況下,任何比較排序演算法都需要做 nlgn 次比較。因此堆排序和歸併排序都是漸近最優的比較排序演算法。本章討論三種用運算而不是比較來確定排序順序的線性時間複雜度的排序演算法 計數排序假設n個輸入元素中的每乙個都是在0 k...
《演算法導論》筆記 第8章 8 2計數排序
計數排序假設n個輸入元素中的每乙個都是介於0到k之間的整數,此處k為某個整數。當k o n 時,計數排序的執行時間為 n 計數排序是穩定的。void countingsort int a,int b,int n,int k for int j 1 j n j for int i 1 i k i fo...