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

2021-09-06 05:24:03 字數 787 閱讀 2622

1>為什麼需要考量乙個演算法的複雜度?

事後統計法:就我個人而言,演算法的好壞,可以考量我們應用效率,有些公司通過大量的測試去考量乙個演算法,通過測試監控執行的時間複雜度,空間等複雜度,這都必須經過通過資料測試來求得,這種結果相對來說還是比較準確的,畢竟是經過實踐測試得到,但是是這種測試依賴集群環境,cpu處理器等影響,可以說是事後統計法,

存在的問題:a>太過於依賴環境,機器硬體,cpu 處理器等影響結果

b>相對麻煩,如果有100億條資料,只有通過測試才能知道複雜度,需要時間消耗,時間等待,占用機器資源,從而引出通過數學知識分析時間複雜度,空間複雜度,最好,最壞,平均,均攤時間複雜度等複雜度,總體考量乙個演算法的執行效率,到底能做到節多少的時間,空間

2>複雜度的表示法,(大o表示法)

列1

public int sum_int(int n )

return sum;

}

解釋,這段**是從1+2+3+....+10求和運算,我們假設每行**的執行時間都是相同的.,都是1unit_time,其中

第2行執行了一次,對應時間是1unit_time,

第3行**執行了n次,所以對應的執行時間是n unit_time,

第3行**執行了n次,對應的執行時間是n unit_time 

總結:總的執行時間是是1unit_time+n unit_time+n unit_time = (2n+1) unit_time,即:t(n) = (2n+1) unit_time從上式子可以看出,**的執行時間與每行**的執行時間成正比

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

演示 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...

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

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

資料結構 演算法基礎 複雜度分析2

最好 最壞 平均 均攤時間複雜度 最好 最壞時間複雜度 示例1 示例1 deffind x,list for item in list if item x pos list index x return pos上述 時間複雜度 等於len list n o n 改寫 deffind2 x,list ...