時間複雜度怎麼算?

2021-10-13 13:11:19 字數 2209 閱讀 4703

時間複雜度:估算程式指令執行的次數

注意:為了方便,省略了方法的修飾,只保留了方法名

method1()

// 1+1+1 = 3

method2()

}//1+(5+1)+5+5 = 17

method3

(int n)

}//1+(n+1)+n+n = 3n+2

method4

(int n)}}

//外層2n+2; 複雜度:2n+2+n*(3n+2) = 3n^2+4n+2

method5

(int n)}}

// 複雜度:2n+2+n*(47) = 49n+2

method6

(int n)}/*

假如:n=8 ; 8/2=4 執行1次;4/2=2 執行1次;2/2=1 執行1次;1/2=0.5=0 執行判斷後,不進入迴圈體。

所以迴圈體執行3次,判斷執行3+1次;2^3=8---->log2(8)=3

n=16 ; 16/2=8 執行1次;8/2=4 執行1次;4/2=2 執行1次;2/2=1 執行1次;

所以迴圈體執行4次,判斷執行4+1次;2^4=16---->log2(16)=4

所以時間複雜度:log2(n)+(log2(n)+1) = 2log2(n)+1

log2(n):迴圈體內執行次數,(log2(n)+1):判斷語句執行次數

*/

method7

(int n)

}// 由method6可知,複雜度:log5(n)+(log5(n)+1) = 2log5(n)+1

// log5(n):迴圈體內執行次數, (log5(n)+1):判斷語句執行次數

method8

(int n)}}

/* i=1, i=1*2=2, i=1*2*2=4, i=1*2*2*2=8 ; 所以i

method9

(int n)}}

/* i=0,內部執行n次;i=1,內部執行n-1; i=2,內部執行n-2;…… i=n-1,內部迴圈執行1次。等差數列

=n*(n+1)/2 = (1/2)n^2+(1/2)n;

所以內部迴圈除了j

上面的時間複雜度的表示還是較複雜,我們一般都使用大o表示法來簡化表示時間複雜度。

1、複雜度為常數,如23,9999,等等 都表示為o(1)

2、複雜度包含n時,省略係數與常數項,只取n的最高端項

​ 如:2n+45 為 o(n) ; 4n^3 + 6n^2+n 為o(n^3)

3、複雜度為對數時:如log5(n)、log2(n) 等等 都表示為 o(logn)

4、省略低階,只取高階 (即取最大的)

​ 如:logn+nlogn 表示為o(nlogn)

複雜度的大小

o(1) < o(logn) < o(n) < o(nlogn) < o(n^2) < o(n^3) < o(2^n) < o(n!) < o(n^n)

複雜度越小,則說明你的**越好

那麼上面的 method1~method9 用大o表示法如下:

method1: 1+1+1 = 3   即o(1)

method2: 1+(5+1)+5+5 = 17 即o(1)

method3: 3n+2 即o(n)

method4: 3n^2+4n+2 即o(n^2)

method5: 49n+2 即o(n)

method6: 2log2(n)+1 即o(logn)

method7: 2log5(n)+1 即o(logn)

method8: 2nlog2(n)+4log2(n)+2 即o(nlogn)

method9: 2n+2+4*((1/2)n^2+(1/2)n)+1 即o(n^2)

空間複雜度怎麼算 (八)時間複雜度

源於生活,抽象生活。是時候引入時間複雜度這個概念了。好長時間沒有辦法表述這個用來精確衡量乙個演算法在時間上複雜度優劣指標,直到我看到我看到小會的麵包和雞腿的描述。我想,這才是源於生活的演算法。如何衡量乙個演算法的好壞?一般來說,我們從兩個方面來衡量乙個演算法 占用空間我們先按下不表 土豪,有的是硬碟...

dfs時間複雜度 時間複雜度 空間複雜度

時間複雜度的數學證明方法相對比較複雜,通常在工程實際中,會分析就好。注意 只看最高複雜度的運算 int for for for for int遞迴如何分析時間複雜度?常數係數可以忽略,在分析時不用考慮,只要說以上術語即可。主定理 master throrem 上述第四種是歸併排序,所有排序演算法,最...

時間複雜度 空間複雜度

時間複雜度 在電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串 的長度的函式。時間複雜度常用大o符號 表述,不包括這個函式的低階項和首項係數。計算時間複雜度的方法 1 只保留高階項,低階項直接丟棄 2 係數不要 3 執行次數是常數是為o 1...