時間複雜度

在計算機科學中 ， 算法的時間複雜度 （ Time complexity ） 是一個函數 ， 它定性描述該算法的運行時間 。 這是一個代表算法輸入值的字符串的長度的函數 。 時間複雜度常用大O符號表述 ， 不包括這個函數的低階項和首項係數 。 使用這種方式時 ， 時間複雜度可被稱爲是漸近的 ， 亦即考察輸入值大小趨近無窮時的情況 。 例如 ， 如果一個算法對於任何大小爲 n （ 必須比 n0 大 ） 的輸入 ， 它至多需要 的時間運行完畢 ， 那麼它的漸近時間複雜度是 O ( n3 ) 。 爲了計算時間複雜度 ， 我們通常會估計算法的操作單元數量 ， 每個單元執行的時間都是相同的 。 因此 ， 總運行時間和算法的操作單元數量最多相差一個常量係數 。 相同大小的不同輸入值仍可能造成算法的執行時間不同 ， 因此我們通常使用算法的 ， 記爲 T ( n ) ， 定義爲任何大小的輸入 n 所需的最大執行時間 。 另一種較少使用的方法是 ， 通常有特別指定纔會使用 。 時間複雜度可以用函數 T ( n ) 的自然特性加以分類 ， 舉例來說 ， 有著 T ( n ) = O ( n ) 的算法被稱作 「 線性時間算法 」 ； 而 T ( n ) = O ( Mn ) 和 Mn = O ( T ( n ) ) ， 其中 M ≥ n > 1 的算法被稱作 「 指數時間算法 」 。