時間複雜度

時間複雜度 

爲什麼需要複雜度分析

直接跑代碼通過統計、監控獲取算法的執行時間和佔用的內存大小的性能測試,叫事後統計法。

侷限性:

1、測試結果非常依賴測試環境;如,不同處理器效率不同

2、測試結果受數據規模影響很大;測試數據規模太小,測試結果可能無法反應算法的性能

複雜度分析有不依賴環境、成本低、效率高、易操作、指導性強等特點

 

概念

大O時間複雜度表示法,表示代碼執行時間隨數據規模增長的變化趨勢,也叫漸進式時間複雜度

複雜度描述的是算法執行時間與數據規模的增長關係

複雜度量級,從小到大排序:常數階O(1)->對數階O(logn)->線性階O(n)->線性對數階O(nlogn)->平方階O(n^2)->立方階O(n^3)->k次方階O(n^k)->非多項式量級(指數階O(2^n),階乘階O(n!))

 

分析法則

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

複雜度分析法則

(1)單段代碼看高頻:比如循環

(2)多段代碼取最大:比如一段代碼有單循環和多重循環,那麼取多重循環的複雜度

(3)嵌套代碼求乘積:比如遞歸、多重循環等

(4)多個規模求加分:比如方法有兩個參數控制兩個循環次數,無法事先評估m和n誰的量級大取兩則相加

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章