時間複雜度

1. 維基上的定義

在計算機科學中,算法的時間複雜度是一個函數,它定性描述該算法的運行時間。這是一個表明算法輸入值的字符串的長度的函數。時間複雜度經常使用大O符號表述,不包括這個函數的低階項和首項係數。使用這種方式時,時間複雜度可被稱爲是漸近的,亦即考察輸入值大小趨近無窮時的狀況。算法


2 複雜度分類

  1. 最壞狀況複雜度:(常說的複雜度)定義爲任何大小的輸入 n 所需的最大執行時間
  2. 平均狀況複雜度:一般有特別指定纔會使用

3. 算法歸類

  1. 線性時間算法:T(n) = O(n);
  2. 指數時間算法:T(n) = O(Mn) 和 Mn= O(T(n)) ,其中 M ≥ n > 1;

4. 常見時間複雜度列表

名稱 運行時間 T(n) 算法舉例
常數時間 O(1) 判斷一個二進制數的奇偶
對數時間 O(log n) 二分搜索
線性時間 O(n) 無序數組的搜索
線性對數時間 O(nlog n) 最快的比較排序
二次時間 O(n^2) 冒泡排序、插入排序

常見的算法時間複雜度由小到大依次爲:Ο(1)<Ο(logn)<Ο(n)<Ο(nlogn)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!) 注:儘量選用多項式階O(nk)的算法(即P問題)數組


5 通俗理解

  1. 知乎-司馬懿的回答
相關文章
相關標籤/搜索