資料結構與演算法 複雜度分析

2021-08-28 11:46:44 字數 999 閱讀 1744

一、什麼是複雜度分析?

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

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

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

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

二、為什麼要進行複雜度分析?

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

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

三、如何進行複雜度分析?

1.大o表示法

1)**

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

2)特點

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

2.複雜度分析法則

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

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

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

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

四、常用的複雜度級別?

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

o(1)(常數階)、o(logn)(對數階)、o(n)(線性階)、o(nlogn)(線性對數階)、o(n^2)(平方階)、o(n^3)(立方階)

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

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

五、如何掌握好複雜度分析方法?

複雜度分析關鍵在於多練,所謂孰能生巧。

資料結構與演算法110 複雜度分析

很多人會有疑問,複雜度分為時間和空間複雜度,現在有很多任務具監控統計執行時間和占用記憶體大小,為什麼還要去分析呢?這種測試的的結果非常依賴當時的測試環境 硬體 網速等 結果還受到資料量的影響。所以我們需要通過時間空間複雜度來估計執行的效率。int sumnumber int n return sum...

資料結構與演算法(一)複雜度分析

執行時間t n 與執行次數n成正比,即t n o f n 大o表示時間複雜度,又稱漸進時間複雜度,表徵 執行時間隨資料規模增長的變化趨勢。一定程度上可以模擬斜率 導數。1.只關注迴圈執行次數最多的 行,忽略常數 2.加法法則 總複雜度等於量級最大的那個時間複雜度 3.乘法法則 總複雜度等於巢狀的各個...

資料結構與演算法 02 複雜度分析

資料結構與演算法的本身解決的是 快 和 省 的問題。節省空間,且執行效率快,今天我們通過複雜度分析來考量 的執行效率,複雜度又分為時間複雜度和空間複雜度兩大類。事後統計法 通過運用工具監控的 執行的方法,統計 的執行時間和占用空間。這種方法無法真實的反應 的效能。1.1 測試結果非常依賴測試環境 受...