日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

时间复杂度算法分析

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 时间复杂度算法分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

時間復雜度

時間復雜度是描述算法運行的時間。我們把算法需要運算的次數用輸入大小為 n 的函數來表示, 計作 T(n)。時間復雜度通常用O(n)來表示,公式為T(n)=O(f(n)),其中f(n)表示每行 代碼的執行次數之和,注意是執行次數


O(1) 復雜度

算法執行所需要的時間不隨著某個變量 n 的大小而變化,即此算法時間復雜度為一個常量,可表示
為 O(1)

O(1)表示常數級別的復雜度,不管你是O(幾),統一給你計作 O(1)


O(n) 復雜度

上面這段代碼,寫了一個 for 循環,從 0 到 n ,不管 n 是多少,都要循環 n 次,而且只循環 n 次,所以得到復雜度為 O(n)


O(n2) 復雜度

上面的程序嵌套了兩個循環,外層是 0 到 n ,內層基于每一個不同的 i ,也要從 0 到 n 執行, 得到復雜度為 O(n2)。可以看出,隨著 n 增大,復雜度會成平方級別增加。


O(log(n)) 對數復雜度


講到這里順便來復習一下高中數學知識,函數 y = loga x 叫做對數函數, a 就是對數函數的底 數。

對數復雜度是比較常見的一種復雜度,也是比較難分析的一種復雜度。觀察上面的代碼, i 從 1 開 始,每循環一次就乘以 2,直到 i 大于 n 時結束循環。

21 ??>22 ??>23…??>2x
觀察上面列出 i 的取值發現,是一個等比數列,要知道循環了多少次,求出 x 的值即可。由
2x =n得到,x=log2n,所以這段代碼的時間復雜度為log2n。 如果把上面的 i *= 2 改為 i *= 3 ,那么這段代碼的時間復雜度就是 log3 n 。


遞歸的時間復雜度

遞歸算法中,每個遞歸函數的的時間復雜度為O(s),遞歸的調用次數為 n,則該遞歸算法的時 間復雜度為 O(n) = n ? O(s)

我們先來看一個經典的問題,斐波那契數列( Fibonacci sequence ):

F (0) = 1,F (2) = 1, F (n) = F (n ? 1) + F (n ? 2)(n ≥ 2, n ∈ N ? )

我們很容易寫出上面這樣一段遞歸的代碼,往往會忽略了時間復雜度是多少,換句話說調用多少 次。可以代一個數進去,例如 n = 5,完了之后大概就能理解遞歸的時間復雜度是怎么來的。


總結

以上是生活随笔為你收集整理的时间复杂度算法分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。