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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

算法的复杂度

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

目錄

  • 算法的復雜度
    • 一、算法時間復雜度
    • 二、算法的空間復雜度

算法的復雜度

算法的復雜度分為:空間復雜度和時間復雜度。
我們研究算法的復雜度,側重的是研究算法隨著輸入規模擴大增長量的一個抽象,而不是精確地定位需要執行多少次。因為如果那樣的話,我們還要考慮編譯器的優化問題等等一些其他的問題。
我們在計算算法的復雜度時不用關心編寫程序所用的語言時什么,也不用關心這些程序將跑在什么樣的計算機上,我們只關心它所實現的算法。不計那些循環索引的遞增和循環終止條件、變量聲明、打印結果等操作。
最終,在分析程序的運行時間時,最重要的是把程序看成是獨立于程序設計語言的算法或一系列步驟。

我們在分析一個算法的運行時間時,重要的是把基本操作的數量和輸入模式關聯起來。

一、算法時間復雜度

定義:在進行算法分析時,語句總的執行次數T(n)是關于問題規模n的函數,進而分析T(n)隨n的變化情況并確定T(n)的數量級。算法的時間復雜度,也就是算法的時間量度。記作:T(n)=O(f(n))。它表示隨著問題規模n的擴大,算法執行時間的增長率和f(n)的增長率相同,稱作算法的漸進時間復雜度,簡稱為時間復雜度。其中f(n)是問題規模n的函數。

一般情況下,隨著輸入規模n的增加,T(n)增長最慢的算法為最優算法。

如何分析一個算法的時間復雜度呢?
用常數1取代運行時間中的所有的加法。
在修改后的運行次數函數中,只保留最高階項。
如果最高階項存在且不是1,則除去與這個項相乘的常數。
得到的最后結果就是時間復雜度。
例:

上面程序的時間復雜度按理說應為O(n^2+n),但其實不是這樣的。按照上面的概念可知時間復雜度為O(n ^2)這是因為當n特別大的時候O(n)對原來時間復雜度的增加效果不明顯,就可以忽略了。


由上圖可知:常用的時間復雜度所耗費的時間從小到大依次為:O(1)<O(logn)<O(n)<O(nlogn)<O(n ^2 )<
(n ^ 3)<O(2^n)<O(n!)<O(n ^n)

二、算法的空間復雜度

算法的空間復雜度通過計算算法所需的存儲空間實現,算法的空間復雜度的計算公式記作:S(n)=O(f(n)),其中,n為問題的規模,f(n)為語句關于n所占存儲空間的函數。
通常,我們都是用 “ 時間復雜度 ” 來指運行時間的需求,用 “ 空間復雜度 ” 來指空間需求。當題目中要讓我們求 “ 復雜度 ” 時,通常指的是時間復雜度。

總結

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

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