1、演算法時間複雜度分析:
1) 原操作:定義語句、賦值語句、輸入輸出語句、(即非迴圈、順序、分支等控制結構)
2) 頻度(tn):原操作執行的次數
4)
演算法時間複雜度o(n):頻度的數量級
5) 問題規模n:把任何要解決的問題的輸入都轉化成乙個陣列,那麼陣列長度就是問題規模。
6) o(1):即常數階,乙個演算法中沒有迴圈或是迴圈跟問題規模n無關,比如演算法中只有定義、賦值、輸入輸出語句時。
7) o(1)8) 多項式時間複雜度:o(log2n )、o(n)、o(nlog2n )、o( n^2)、o(n^3 )
9) 指數時間複雜度:o( 2^n)、o(n!)
10) p問題:可以用多項式時間複雜度的演算法解決的問題
11) np問題:只能用指數時間複雜度解決的問題
12) np=p:想辦法將np問題轉化為可以用多項式時間複雜度的演算法去解決。
13) 求和定理: (n)+ (n) =max
14) 求積定理: (n)× (n)= o( f( n )×g( n ) )
15) 根據輸入例項的不同,分為最好、最差、平均時間複雜度
16)
遞迴演算法時間複雜度分析(未解決)
2、演算法空間複雜度分析:
1) 演算法的儲存量:程式本身占用的空間、輸入資料占用的空間、臨時變數占用的空間
2) 演算法空間複雜度:臨時變數占用的空間
3) 臨時變數:函式體內定義的變數,不包括形參,也是以數量級的形式
4) 遞迴演算法空間複雜度分析(未解決)
資料結構與演算法 複雜度分析
一 什麼是複雜度分析?1.資料結構和演算法解決是 如何讓計算機更快時間 更省空間的解決問題 2.因此需從執行時間和占用空間兩個維度來評估資料結構和演算法的效能。3.分別用時間複雜度和空間複雜度兩個概念來描述效能問題,二者統稱為複雜度。4.複雜度描述的是演算法執行時間 或占用空間 與資料規模的增長關係...
資料結構和演算法 複雜度分析
演算法的執行效率,粗略的講就是演算法的執行時間,那麼如何在不執行 的情況下,估算 的執行時間呢 我們先看乙個簡單的求和 1 int cal int n 7 return sum 8 從cpu的角度來看,每一行 都做著相同的工作,讀資料 計算 寫資料,儘管每行 對應的cpu的執行個數,執行時間都不一樣...
資料結構 演算法基礎 複雜度分析
演示 def func a 1 b 2 c 3if name main func 時間複雜度?執行次數上述 他的複雜度 假設每次執行都花了 unit t 時間,上述 func 執行了3次,花費 3 unit t 的時間。演示2 演示2 deffunc2 n sum 0 unit t for i in...