演算法的時間複雜度

2021-10-08 21:19:23 字數 2487 閱讀 4267

演算法複雜度是評價乙個演算法是否高效的依據。

演算法複雜度分為時間複雜度空間複雜度,乙個高效的演算法具有用時短或者使用空間少的特點。

隨著儲存技術的發展,儲存介質的容量也發生了翻天覆地的變化,更有出現一些以空間換時間的演算法。因此,如今評價演算法的效率更加關注「用時短」方面,即是時間複雜度

簡單的來說,演算法的時間複雜度表示程式執行直至完成所需的總時間。

因為程式可以由不同的程式語言實現,可以在配置不同的機器上面執行,那麼不同的程式語言和不同的配置機器之間就沒有可比性。因此不能用程式執行的具體時間比較效率,而是要用基本運算的次數來度量演算法的時間複雜度。

乙個演算法是由控制結構(順序、分支和迴圈)和原操作(比如有四則運算,比較運算,賦值運算等)構成的,演算法時間複雜度取決於兩者的基本運算次數之和。進行基本運算的次數越少,其執行時間也就相對越少;基本運算次數越多,其執行時間也就相對越多。

求解1~1000的累加和:

#include int main()

printf("sum=%d\t",sum);

return 0;

}

我們已經知道,演算法的時間複雜度取決於演算法的基本運算的次數。

以上程式的基本運算次數:tn=

3n+3

t_n = 3n+3

tn​=3n

+3演算法的時間複雜度通常使用「大o表示法」( big o notation)表示,大o符號的作用在於用簡單的函式來描述複雜函式行為,給出乙個上或下界。

演算法中基本運算次數 t

nt_n

tn​ 是問題規模 n

nn 的某個函式 f

nf_n

fn​,記作:tn=

o(fn

)t_n = o(f_n)

tn​=o(

fn​)

。表示 t

nt_n

tn​ 與 f

nf_n

fn​ 是同量級函式,具有相同的增長率;

表示當 n

nn 趨於正無窮時,存在乙個常數 c

cc ,總有 t

n<=c

∗f

nt_n <= c * f_n

tn​<=c

∗fn​

,簡單的來說,當 n

nn 趨於正無窮時,tn=

fn

t_n = f_n

tn​=fn

​。由 t n=

3n+3

t_n = 3n + 3

tn​=3n

+3可得,

時間複雜度 o(f

n)=o

(3n+

3)=o

(n

)o(f_n)=o(3n+3)=o(n)

o(fn​)

=o(3

n+3)

=o(n

) 。計算時間複雜度的步驟:

例如:

t n=

n2+3

n+4=

o(n2

+3n+

4)=o

(n2)

t_n=n^2+3n+4=o(n^2+3n+4)=o(n^2)

tn​=n2

+3n+

4=o(

n2+3

n+4)

=o(n

2) tn=

4n2+

2n+1

=o(4

n2+2

n+1)

=o(n

2)

t_n=4n^2+2n+1=o(4n^2+2n+1)=o(n^2)

tn​=4n

2+2n

+1=o

(4n2

+2n+

1)=o

(n2)

時間複雜度

時間複雜度量級

大小(由小到大)

o (1

)o(1)

o(1)

常數階1

o

(log⁡2

n)

o(\log_2n)

o(log2​n

)對數階2o(n

)o(n)

o(n)

線性階3

o (n

logn

)o(nlogn)

o(nlog

n)線性對數階4o(n

2)

o(n^2)

o(n2

)平方階5o(n

3)

o(n^3)

o(n3

)立方階6o(2

n)

o(2^n)

o(2n

)指數階

7

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

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

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

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表示 乙個演算法是由控制結構 順序,分支,迴圈三種 和原操作 指固有資料型別的操作 ...