演算法導論基礎(第一 五章)

2022-05-13 03:26:38 字數 650 閱讀 8144

最好情況輸入陣列開始時候就是滿足要求的排好序的,時間代價為θ(n);

最壞情況輸入陣列是按逆序排序的,時間代價為θ(n^2)。

歸併排序採用了演算法設計中的分治法,分治法的思想是將原問題分解成n個規模較小而結構與原問題相似的小問題,遞迴的解決這些子問題,然後再去合併其結果,得到原問題的解。

分治模式在每一層遞迴上有三個步驟:

分解(divide):將原問題分解成一系列子問題。

解決(conquer):遞迴地解答各子問題,若子問題足夠小,則直接求解。

合併(combine):將子問題的結果合併成原問題的解。

歸併排序(merge sort)演算法按照分治模式,操作如下:

分解:將n個元素分解成各含n/2個元素的子串行

解決:用合併排序法對兩個序列遞迴地排序

合併:合併兩個已排序的子串行以得到排序結果

演算法中含有對其自身的遞迴呼叫,其執行時間可以用乙個遞迴方程(或遞迴式)來表示。歸併排序演算法分析採用遞迴樹進行,遞迴樹的層數為lgn+1,每一層的時間代價是cn,整棵樹的代價是cn(lgn+1)=cnlgn+cn,忽略低階和常量c,得到結果為θ(nlg n)。

演算法導論第2章 演算法基礎

2.1 插入排序 includeusing namespace std void insertion sort int a,int n 宣告 void print int a,int n void insertion sort int a,int n a i 1 key void print int...

《演算法導論》第2章 演算法基礎

學習內容 演算法 尤其是遞迴演算法 複雜度的計算方法 證明演算法正確性的三個步驟 雖然我沒有怎麼弄清楚 幾個排序演算法的實現與比較 插入排序 include using namespace std int a 6 int main a i 1 key 此時a i 為第乙個不比key大的元素 for ...

演算法導論第一章

第一章 演算法在計算中的作用 1.1演算法 非形式地說,演算法就是任何良定義的計算過程,該過程取某個值或值的集合作為輸入並產生某個值或值的集合作為輸出。這樣,演算法就是把輸入轉換成輸出的計算步驟的乙個序列。若對每個輸入例項演算法都以正確的輸出停機,則稱該演算法是正確的,並稱正確的演算法解決了給定的計...