常見算法的時間復雜度(大O計數法)


定義

​ 對於不同的機器環境而言,確切的單位時間是不同的,但是對於算法進行多少個基本操作(即花費多少時間單位)在規模數量級上卻是相同的,由此可以忽略機器環境的影響而客觀的反應算法的時間效率。

對於算法的時間復雜度效率,我們可以用“大O記法”來表示

“大O記法”:對於單調的整數函數f,如果存在一個整數函數g和實常數c>0,使得對於充分大的n總有f(n)<=c*g(n),就說函數g是f的一個漸近函數(忽略常數),記為f(n)=O(g(n))。也就是說,在趨向無窮的極限意義下,函數f的增長速度受到函數g的約束,亦即函數f與函數g的特征相似。

時間復雜度:假設存在函數g,使得算法A處理規模為n的問題示例,所用時間為T(n)=O(g(n)),

    對於算法進行特別具體的細致分析雖然很好,但在實踐中的實際價值有限。對於算法的時間性質和空間性質,最重要的是其數量級和趨勢,這些是分析算法效率的主要部分。而計量算法基本操作數量的規模函數中那些常量因子可以忽略不計。例如,可以認為3n^2和100n^2屬於同一個量級,如果兩個算法處理同樣規模實例的代價分別為這兩個函數,就認為它們的效率“差不多”,都為n^2級。
  • 我們主要關注算法的最壞情況,亦即最壞時間復雜度。

基本計算規則

1、基本操作,即只有常數項,認為其時間復雜度為O(1)
2、順序結構,時間復雜度按加法進行計算
3、循環結構,時間復雜度按乘法進行計算
4、分支結構,時間復雜度取最大值
5、判斷一個算法的效率時,往往只需要關注操作數量的最高次項,其它次要項和常數項可以忽略
6、在沒有特殊說明時,我們所分析的算法的時間復雜度都是指最壞時間復雜度

常見時間復雜度

常見時間復雜度之間的關系

排序算法的時間復雜度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM