《演算法導論》讀書筆記(一)

2021-07-22 15:41:57 字數 1353 閱讀 1934

理解:

輸入到輸出的計算過程稱為演算法。

1.演算法描述

2.證明演算法正確性

3.分析演算法效率

兩個例子:

1.插入排序

思想:

從未排序的序列中取出乙個元素,將其插入到已排序序列的正確位置。

實現:

#include 

#include

using

namespace

std;

int main()}}

for (int i=0; icout

<< order[i] << " ";

cout

<< endl;

return

0;}

2.歸併排序

思想:

分治,遞迴的思想,對於乙個未排序的序列將其遞迴的分成兩份,再將其合併為有序序列。

實現:

#include 

#include

#include

using

namespace

std;

vector

merge_sort( vector

arr, int start, int end);

vector

merge( vector

arr, int start, int mid, int end);

vector

merge_sort( vector

arr, int start, int end)

return arr;

}vector

merge( vector

arr, int start, int mid, int end)

else

}return comb;

} int main()

漸近記號包括:

(1)θ(theta):緊確界。 相當於」=」

(2)o (大歐):上界。 相當於」<=」

(3)o(小歐):非緊的上界。 相當於」<」

(4)ω(大omega):下界。 相當於」>=」

(5)ω(小omega):非緊的下界。 相當於」>」

主方法:

t(n) = at(n/b)+h(n)

a >=1 ; b >1 ; h(n) : 不參與遞迴的複雜度函式

判斷n^log b (a)與h(n)的大小關係

等於θ(h(n)) :該方法的複雜度為 θ(h(n)*lg(n))

大於θ(h(n)) :該方法的複雜度為 θ(n^(log a/log b))

小於θ(h(n)) :該方法複雜度為 θ(h(n))

讀書筆記 演算法導論

第2章演算法入門 浮於表面不如深入其中,送給自己,自己是最大的敵人,那麼就盡最大努力去克服自己,沉思,冷靜,不浮躁!勘誤 在演算法導論第9頁,扼要的扼 內容提要 1 偽 的表示方法 2 插入排序演算法分析 3 迴圈不變式 4 演算法設計之分治法 divide and conquer 5 合併排序演算...

演算法導論 讀書筆記2010 12 6

演算法就是一系列的計算步驟,用來將輸入資料轉換為輸出結果。資料結構師儲存和組織資料的一種方式,以便於對資料進行訪問和修改。插入排序演算法,對n個資料項的時間大約是c1n 2,其中c1是乙個不依賴於n的常量。亦即該演算法所需的時間大致與n 2成正比。合併排序演算法,排序n個資料項的時間大約是c2log...

演算法導論讀書筆記(3)

當輸入規模大到使執行時間只和增長的量級有關時,就是在研究演算法的漸近效率。就是說,從極限角度看,我們只關心演算法執行時間如何隨著輸入規模的無限增長而增長。表示演算法的漸近執行時間的記號是用定義域為自然數集n 的函式來定義的。這些記號便於用來表示最壞情況執行時間 t n 對乙個給定的函式 g n 用 ...