時間複雜度例子

2022-08-22 11:51:11 字數 1678 閱讀 8059

時間複雜度計算例項

表示時間複雜度的階有:

o(1) :常量時間階o (n):線性時間階

o(㏒n) :對數時間階o(n㏒n) :線性對數時間階

o (nk): k≥2 ,k次方時間階

例1兩個n階方陣的乘法

for(i=1,i<=n; ++i)

for(j=1; j<=n; ++j)

由於是乙個三重迴圈,每個迴圈從1到n,則總次數為: n×n×n=n3 時間複雜度為t(n)=o(n3)【立方階】

例2將x自增看成是基本操作,則語句頻度為1,即時間複雜度為o(1) 。【常量階】

如果將s=0也看成是基本操作,則語句頻度為2,其時間複雜度仍為o(1),即常量階。

例3for(i=1; i<=n; ++i)

語句頻度為:2n,其時間複雜度為:o(n) ,即為【線性階】。

例4for(i=1; i<=n; ++i)

for(j=1; j<=n; ++j)

語句頻度為:n*n*2=2n2 ,其時間複雜度為:o(n2) ,即為【平方階】。

定理:若a(n)=amnm +am-1nm-1+…+a1n+a0

是乙個m次多項式,則a(n)=o(nm)

例5for(i=2;i<=n;++i)

for(j=2;j<=i-1;++j)

語句頻度為:1+2+3+…+n-2=(1+n-2) ×(n-2)/2

=(n-1)(n-2)/2 =n2-3n+2

∴時間複雜度為o(n2),即此演算法的時間複雜度為【平方階】。

乙個演算法時間為o(1)的演算法,它的基本運算執行的次數是固定的。因此,總的時間由乙個常數(即零次多項式)來限界。而乙個時間為o(n2)的演算法則由乙個二次多項式來限界。

以下六種計算演算法時間的多項式是最常用的。其關係為:

o(1) < o(㏒n) < o(n) < o(n㏒n) < o(n2) < o(n3)

指數時間的關係為:

o(2n) < o(n!) < o(nn)

當n取得很大時,指數時間演算法和多項式時間演算法在所需時間上非常懸殊。

例1:素數的判斷演算法。

void prime( int n)

巢狀的最深層語句是i++;其頻度由條件( (n% i)!=0 && i*1.0< sqrt(n) )決定,顯然i*1.0< sqrt(n) ,時間複雜度o(n1/2)。

或者說是o(sqrt(n));

例2:氣泡排序法。

void bubble_sort(int a,int n)

}最好情況:0次

最壞情況:1+2+3+⋯+n-1=n(n-1)/2

平均時間複雜度為: o(n2)  【平方階】 

**

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

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

時間複雜度 空間複雜度

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

時間複雜度 空間複雜度

演算法複雜度分為時間複雜度和空間複雜度。其作用 時間複雜度是指執行演算法所需要的計算工作量 而空間複雜度是指執行這個演算法所需要的記憶體空間。一 時間複雜度 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道...