筆記整合 複雜度分析

2021-09-11 15:29:47 字數 1677 閱讀 4446

1.資料結構和演算法解決是「如何讓計算機更快時間、更省空間的解決問題」。

2.因此需從執行時間和占用空間兩個維度來評估資料結構和演算法的效能。

3.分別用時間複雜度和空間複雜度兩個概念來描述效能問題,二者統稱為複雜度。

4.複雜度描述的是演算法執行時間(或占用空間)與資料規模的增長關係。

1.和效能測試相比,複雜度分析有不依賴執行環境、成本低、效率高、易操作、指導性強的特點。

2.掌握複雜度分析,將能編寫出效能更優的**,有利於降低系統開發和維護成本。

1.大o表示法

1)**

演算法的執行時間與每行**的執行次數成正比,用t(n) = o(f(n))表示,其中t(n)表示演算法執行總時間,f(n)表示每行**執行總次數,而n往往表示資料的規模。

2)特點

以時間複雜度為例,由於時間複雜度描述的是演算法執行時間與資料規模的增長變化趨勢,所以常量階、低階以及係數實際上對增長趨勢不產決定性影響,所以在做時間複雜度分析時忽略這些項。

2.時間複雜度分析方法

1)只關注執行次數最多的那段**。

2)加法法則:總複雜度取量級最大的那段**。

3)乘法法則:**之間複雜度有巢狀情況,將各個複雜度相乘得到總複雜度。

3.複雜度分析法則

1)單段**看高頻:比如迴圈。

2)多段**取最大:比如一段**中有單迴圈和多重迴圈,那麼取多重迴圈的複雜度。

3)巢狀**求乘積:比如遞迴、多重迴圈等

4)多個規模求加法:比如方法有兩個引數控制兩個迴圈的次數,那麼這時就取二者複雜度相加。

多項式階:隨著資料規模的增長,演算法的執行時間和空間占用,按照多項式的比例增長。包括:

o(1)(常數階)、o(logn)(對數階)、o(n)(線性階)、o(nlogn)(線性對數階)、o(n2)(平方階)、o(n3)(立方階)

非多項式階:隨著資料規模的增長,演算法的執行時間和空間占用暴增,這類演算法效能極差。包括:

o(2n)(指數階)、o(n!)(階乘階)

ps:常見的空間複雜度就是:o(1)、o(n)、o(n2)

1.最壞情況時間複雜度:**在最理想情況下執行的時間複雜度。

2.最好情況時間複雜度:**在最壞情況下執行的時間複雜度。

3.平均時間複雜度:用**在所有情況下執行的次數的加權平均值表示。

4.均攤時間複雜度:在**執行的所有複雜度情況中絕大部分是低階別的複雜度,個別情況是高階別複雜度且發生具有時序關係時,可以將個別高階別複雜度均攤到低級別複雜度上。基本上均攤結果就等於低級別複雜度。

1.同一段**在不同情況下時間複雜度會出現量級差異,為了更全面,更準確的描述**的時間複雜度,所以引入這4個概念。

2.**複雜度在不同情況下出現量級差別時才需要區別這四種複雜度。大多數情況下,是不需要區別分析它們的。

1.平均時間複雜度

**在不同情況下複雜度出現量級差別,則用**所有可能情況下執行次數的加權平均值表示。

2.均攤時間複雜度

兩個條件滿足時使用:

1)**在絕大多數情況下是低級別複雜度,只有極少數情況是高階別複雜度。

2)低級別和高階別複雜度出現具有時序規律。均攤結果一般都等於低級別複雜度。

複雜度分析 時間複雜度分析和空間複雜度分析

其實,只要講到資料結構與演算法,就一定離不開時間 空間複雜度分析。而且我個人認為,複雜度分析是整個演算法學習的精髓,只要掌握了它,資料結構和演算法的內容基本上就掌握了一半。1.時間複雜度分析 對於剛才羅列的複雜度量級,我們可以粗略地分為兩類,多項式量級和非多項式量級。其中,非多項式量級只有兩個 o ...

複雜度分析 時間複雜度 空間複雜度

執行效率是演算法的乙個重要的考量指標,演算法的執行效率用時間 空間複雜度來衡量。今天我們來學習一下複雜度的分析。通常我們可以通過執行程式來獲得演算法的真正的執行時間,這種方法我們可以稱為事後統計法,但這種方法得到的是具體的資料,測試結果很依賴測試環境,而且受資料規模影像最大。因此,我們需要乙個不需要...

筆記 複雜度分析(下)

前言 四個複雜度分析 1.最壞情況時間複雜度 在最壞情況下執行的時間複雜度。2.最好情況時間複雜度 在最理想情況下執行的時間複雜度。3.平均時間複雜度 加權平均時間複雜度 在所有情況下執行次數的加權平均值表示的時間複雜度。4.均攤時間複雜度 在 執行的所有複雜度情況中絕大部分是低階別的複雜度,個別情...