時間複雜度的計算問題

2021-10-10 04:54:04 字數 2458 閱讀 4294

一般情況下,演算法中基本語句重複執行的次數是問題規模n

nn的某個函式f(n

)f(n)

f(n)

演算法的時間量度記做

t (n

)=o(

f(n)

)t(n)=o(f(n))

t(n)=o

(f(n

))它表示問題規模n

nn的增大,演算法執行時間的增長率和f(n

)f(n)

f(n)

的增長率相同,稱作演算法的漸近時間複雜度,簡稱時間複雜度。

演算法的時間複雜度就是未知量n

nn在趨近於無窮大時語句執行次數的最大者。

《小歪翻譯,不喜勿噴》

對for(i = 0; i < n; i++):起始為零加一次,(大)擴前比後多一次;

一般的:

1.設該語句執行x次終止;

2.找出第x次的表示式;

3.由終止條件x = f(n);

1.設n

nn是描述問題規模的非負整數,下列程式段的時間複雜度是

x =0;

while

(n >=

(x +1)

*(x +1)

) x = x+

1;

a.(log n) \qquad

b.o(n1/

2n^

n1/2

)\qquad

c.o(n)\qquad

d.o(n

2n^2

n2)解:對於迴圈體,我們只考慮小括號內的執行次數。因為小括號內的比較大。按步驟來

1.設小括號的語句執行x次終止

2.第一次:n

>0×

0n > 0 × 0

n>0×

0;\,\,\,

第二次: n

>1×

1n > 1 × 1

n>1×

1;\,\,\,\,\,\,

······

第 x次

\,\,\,\,第x次

第x次:n

>x∗

xn>x*x

n>x∗

x;3.第x次時終止,即x

2x^2

x2n 1/

2n^

n1/2

所以x的量級是b。(遠大於》,遠小於《和大於》,小於《是有區別的)

int s =

0,i =

0;j =0;

//1for

(i =

0;i <

3* n +

5;i++

)//2

}

求語句1234的執行次數和程式的時間複雜度

解:對語句1,明顯只執行1次

\qquad

對語句2,由於是從0開始,所以執行次數加1;即:3n+5次

\qquad

對語句3.由於在迴圈體中大括號的後面,所以執行少了一次,而它本身要執行2n-4次,所以總體3執行了(3n+5)(2n-3)次;

同理語句4執行了(3n+5)(2n-3)-1次

所以該結構時間複雜度為o(n

2)

o(n^2)

o(n2

)

int a =1;

while

(a <= n)

//0int m =

1,n =

0,i =0;

for(i =

0; i <= n; i++

)//1

for(i =

0; i < m; i++

)//2

解:語句0:

1.設執行x次終止

2.第一次:122*22

x2^x

2x\quad

2

x2^x

2x>n;n⁡2

n\log_2

log2​n

所以時間複雜度為o(l

ogn)

o(log n)

o(logn

);語句1易知語句1執行了n+2次;(有i<=n再加一次)

時間複雜度為o(n

)o(n)

o(n)

語句2\qquad

易知語句2執行了m次;

而語句1中的迴圈體知m=n!

所以時間複雜度為o(n

!)

o(n!)

o(n!

)其實對於時間複雜度,我們一點也不關心語句執行了多少次,只關心語句執行次數的量級。我們只要知道迴圈變數i從一直加到n是線性階,迴圈體中i成倍增長為對數階。i在迴圈體內線性增加,在條件中倍增為根式階,記住幾個特例,就嫩速度知道結果。當然,試著給個口訣。

點增平方根式階(迴圈體內+幾,比線性增的差的可以說是點增,迴圈條件平方增加。)

變數線增對數階(變數線性乘幾)

時間複雜度的計算問題

時間複雜度 注意的兩點 1 只保留高階項 2 係數直接捨棄 如果是常數,直接為1。例子 1 具體認真的算 for i 1 i n i 1 n n for j 1 j n j i 1時,j可以為1,2 到n.1 n n c i j n n 最終計算結果為f n 3n 2 3n 1 o f n o n ...

時間複雜度計算

定義 如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t n 它是n的某一函式 t n 稱為這一演算法的 時間複雜性 當輸入量n逐漸加大時,時間複雜性的極限情形稱為演算法的 漸近時間複雜性 我們常用大o表示法表示時間複雜性,注意它是某乙個演算法的時間複雜性。大o表示只是說有上界,由定義如...

時間複雜度計算

1,演算法複雜度是在 資料結構 這門課程的第一章裡出現的,因為它稍微涉及到一些數學問題,所以很多同學感覺很難,加上這個概念也不是那麼具體,更讓許多同學複習起來無從下手,下面我們就這個問題給各位考生進行分析。首先了解一下幾個概念。乙個是時間複雜度,乙個是漸近時間複雜度。前者是某個演算法的時間耗費,它是...