演算法的時間複雜度

2022-06-30 07:03:08 字數 1420 閱讀 8772

在電腦科學中,時間複雜性,又稱時間複雜度,演算法的時間複雜度是乙個函式,它定性描述該演算法的執行時間。這是乙個代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。使用這種方式時,時間複雜度可被稱為是漸近的,亦即考察輸入值大小趨近無窮時的情況。

我們把 演算法需要執行的運算次數 用 輸入大小n 的函式 表示,即 t(n) 。此時為了 估算演算法需要的執行時間 和 簡化演算法分析,我們引入時間複雜度的概念。

存在常數 c 和函式 f(n),使得當 n >= c 時 t(n) <= f(n),表示為 t(n) = o(f(n)) 。因為f(n) 的增長速度是大於或者等於 t(n) 的,即t(n) = o(f(n)),所以我們可以用 f(n) 的增長速度來度量 t(n) 的增長速度,所以我們說這個演算法的時間複雜度是 o(f(n))。

那麼當我們拿到演算法的執行次數函式 t(n) 之後怎麼得到演算法的時間複雜度呢?

我們知道常數項對函式的增長速度影響並不大,所以當 t(n) = c,c 為乙個常數的時候,我們說這個演算法的時間複雜度為 o(1);如果 t(n) 不等於乙個常數項時,直接將常數項省略。

我們知道高次項對於函式的增長速度的影響是最大的。n^3 的增長速度是遠超 n^2 的,同時 n^2 的增長速度是遠超 n 的。 同時因為要求的精度不高,所以我們直接忽略低此項。

因為函式的階數對函式的增長速度的影響是最顯著的,所以我們忽略與最高端相乘的常數。

常數階 o(1)

對數階 o(logn)

線性階 o(n)

線性對數階 o(nlogn)

平方階 o(n^2)

立方階 o(n^3)

指數階 o(2^n)

總結就是這張霸氣外露的圖

演算法時間複雜度空間複雜度

演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...

演算法 時間複雜度 空間複雜度

1 if i 1 2 a 1 result 3 4 result n 2 result 1000 1000 3 array.push a array.pop 4 map.set 1,1 map.get 1,1 在計算複雜度的時候,o 1 一般會被忽略。1 for let i 0 i n i 2 wh...

演算法的時間複雜度 空間複雜度

時間複雜度和空間複雜度是度量演算法效率的常用指標 事後統計,不常用 事前統計影響因素 演算法策略 問題規模 程式語言 質量 機器執行指令的速度 撇開軟硬體的影響,演算法執行工作量的大小只依賴於問題的規模 通常用整數n表示 乙個演算法是由控制結構 順序,分支,迴圈三種 和原操作 指固有資料型別的操作 ...