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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

03|复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 03|复杂度分析(上):如何分析、统计算法的执行效率和资源消耗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

?

為什么需要復雜度分析?

大 O 復雜度表示法

時間復雜度分析

幾種常見時間復雜度

空間復雜度分析


為什么需要復雜度分析?

事后統計法:代碼跑一遍,通過統計、監控,就能得到算法執行的時間和占用的內存大小。這種統計方法有非常大的局限性。

  • 測試結果非常依賴測試環境
  • 測試結果受數據規模的影響很大
  • 因此,我們需要一個不用具體的測試數據來測試,就可以粗略地估計算法的執行效率的方法。

    大 O 復雜度表示法

    T(n)表示算法的執行時間,n表示數據規模的大小,f(n)表示每行代碼執行的次數總和。公式中的 O,表示代碼的執行時間 T(n) 與 f(n) 表達式成正比。

    大 O 時間復雜度實際上并不具體表示代碼真正的執行時間,而是表示代碼執行時間隨數據規模增長的變化趨勢,所以,也叫作漸進時間復雜度(asymptotic time complexity),簡稱時間復雜度。

    時間復雜度分析

    如何分析一段代碼的時間復雜度?有三個比較實用的方法

  • 關注循環次數最多的一段代碼
  • 加法法則:總復雜度等于量級最大的那段代碼的復雜度
  • 乘法法則:嵌套代碼的復雜度等于嵌套內外代碼復雜度的乘積
  • 幾種常見時間復雜度

    1.、O(1):一般情況下,只要算法中不存在循環語句、遞歸語句,即使有成千上萬行的代碼,其時間復雜度也是Ο(1)。

    2、O(logn)、O(nlogn)對數階時間復雜度非常常見,同時也是最難分析的一種時間復雜度。我通過一個例子來說明一下。

    3、O(m+n)、O(m*n):代碼的復雜度由兩個數據的規模來決定

    空間復雜度分析

    空間復雜度全稱就是漸進空間復雜度(asymptotic space complexity),表示算法的存儲空間與數據規模之間的增長關系

    我們常見的空間復雜度就是 O(1)、O(n)、O(n2 ),像 O(logn)、O(nlogn) 這樣的對數階復雜度平時都用不到。而且,空間復雜度分析比時間復雜度分析要簡單很多。所以,對于空間復雜度,掌握剛我說的這些內容已經足夠了。

    ?

    ?

    總結

    以上是生活随笔為你收集整理的03|复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?的全部內容,希望文章能夠幫你解決所遇到的問題。

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