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

2021-10-09 08:33:08 字數 859 閱讀 9526

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(n2)(平方階)、o(n3)(立方階) 非多項式階:隨著資料規模的增長,演算法的執行時間和空間占用暴增,這類演算法效能極差。包括, o(2^n)(指數階)、o(n!)(階乘階)

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

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

1 演算法時間複雜度分析 1 原操作 定義語句 賦值語句 輸入輸出語句 即非迴圈 順序 分支等控制結構 2 頻度 tn 原操作執行的次數 4 演算法時間複雜度o n 頻度的數量級 5 問題規模n 把任何要解決的問題的輸入都轉化成乙個陣列,那麼陣列長度就是問題規模。6 o 1 即常數階,乙個演算法中沒...

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

一 什麼是複雜度分析?1.資料結構和演算法解決是 如何讓計算機更快時間 更省空間的解決問題 2.因此需從執行時間和占用空間兩個維度來評估資料結構和演算法的效能。3.分別用時間複雜度和空間複雜度兩個概念來描述效能問題,二者統稱為複雜度。4.複雜度描述的是演算法執行時間 或占用空間 與資料規模的增長關係...

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

演算法的執行效率,粗略的講就是演算法的執行時間,那麼如何在不執行 的情況下,估算 的執行時間呢 我們先看乙個簡單的求和 1 int cal int n 7 return sum 8 從cpu的角度來看,每一行 都做著相同的工作,讀資料 計算 寫資料,儘管每行 對應的cpu的執行個數,執行時間都不一樣...