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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

渐进式复杂度分析-学习笔记

發布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 渐进式复杂度分析-学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

漸進式復雜度分析

      • 概念
      • 目的
      • 大O表示法
      • 復雜度分析方法
      • 常用復雜度級別
      • 復雜度分析的4個概念

概念

復雜度描述的是算法執行時間(或占用空間)與數據規模的增長關系,描述了當數據量趨近于無窮大的時候,算法的執行時間或數據占用空間,因此常量級(不隨數據的增長而增長)的執行時間是忽略的。

目的

和性能測試相比,復雜度分析有不依賴執行環境、成本低、效率高、易操作、指導性強的特點。但是具體問題不一定符合負責度分析的結構,所以特殊情況還是需要做性能測試。

大O表示法

為了方便計算,我們把每行代碼執行一次的時間都看做相等的,因此只要計算該算法一共執行了幾次代碼行就能得出時間復雜度。算法的執行時間與每行代碼的執行次數成正比,用T(n) = O(f(n))表示,其中T(n)表示算法執行總時間,f(n)表示每行代碼執行總次數,而n往往表示數據的規模。該方法把算法所需要的時間,空間簡單量化了,表達式一目了然,非常清晰。

復雜度分析方法

以時間復雜度為例,由于時間復雜度描述的是算法執行時間與數據規模的增長變化趨勢,所以常量階、低階以及系數實際上對這種增長趨勢不產決定性影響,所以在做時間復雜度分析時忽略這些項。以下為常用方法:

  • 單段代碼看高頻:比如循環。
  • 多段代碼取最大:比如一段代碼中有單循環和多重循環,那么取多重循環的復雜度。
  • 嵌套代碼求乘積:比如遞歸、多重循環等
  • 多個規模求加法:比如方法有兩個參數控制兩個循環的次數,那么這時就取二者復雜度相加。
  • 常用復雜度級別

    • 多項式階:
      隨著數據規模的增長,算法的執行時間和空間占用,按照多項式的比例增長。以下復雜度按照從低到高進行排序:
      O(1)(常數階)、O(logn)(對數階)、O(n)(線性階)、O(nlogn)(線性對數階)、O(n2)(平方階)、O(n3)(立方階)

    • 非多項式階:
      隨著數據規模的增長,算法的執行時間和空間占用暴增,這類算法性能極差。包括:
      O(2^n)(指數階)、O(n!)(階乘階)

    復雜度分析的4個概念

  • 最壞情況時間復雜度(best case time complexity):代碼在最理想情況下執行的時間復雜度。
  • 最好情況時間復雜度(worst case time complexity):代碼在最壞情況下執行的時間復雜度。
  • 平均時間復雜度(average case time complexity):代碼在所有情況下執行的次數的加權平均值表示。也叫作加權平局復雜度,或者期望時間復雜度。
  • 均攤時間復雜度(amortized case time complexity):在代碼執行的所有復雜度情況中絕大部分是低級別的復雜度,個別情況是高級別復雜度且發生具有時序關系時,可以將個別高級別復雜度均攤到低級別復雜度上。基本上均攤結果就等于低級別復雜度。可以認為均攤時間復雜度就是一種特殊的平均時間復雜度。(似乎使用這2種方法得出的結論是一樣的)
  • 總結

    以上是生活随笔為你收集整理的渐进式复杂度分析-学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

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