時間複雜度
注意的兩點: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^2) 2、
for(i=2;i<=n;++i)
for(j=2;j=i-1;++j)
++x;
a[i,j]=x;
}只需要算出最重要的部分,最多的部分,也就是執行的總次數
當i=2時,j執行0次;當i=3時,j 執行1次;當i=4時,j執行//2次;當i執行第n 次時,j執行n-2次:
總的次數 2*(0+1+2+(n-2)),2係數可以不要,利用求和公式,
把總次數可以求出來為n^2.整體執行兩次,係數可以不算
o(f(n))=o(n^2)
3、
(1)int fun(int n)
if(n<=1)
return 0;
return fun(n-2)+1;
遞迴:算出需要計算的次數:
n n-2 n-4 n-6…..n-n=0
為方便計算共有多少次,可以寫成 0 2 4 6 8……n,這樣可計算出宮經過了1/2n;
o(n)
(2)return fun(n-1)+1
需要算出總次數
n n-1 n-2 n-3….n-n
0 1 2 3 4 …..n
總次數為n 次 o(n)
(3)return fun(n/2)+1
n n/2 n/4 n/8 n/16 n/32 ……n/n=1
1 2 4 8 16 32…..n
可以寫為2的0、1、2、3、4…….n次方
最後只需算出2的x次方等於n 就好
x = log2n
o(log2x)
時間複雜度的計算問題
一般情況下,演算法中基本語句重複執行的次數是問題規模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,解這一問題的某一演算法所需要的時間為t n 它是n的某一函式 t n 稱為這一演算法的 時間複雜性 當輸入量n逐漸加大時,時間複雜性的極限情形稱為演算法的 漸近時間複雜性 我們常用大o表示法表示時間複雜性,注意它是某乙個演算法的時間複雜性。大o表示只是說有上界,由定義如...
時間複雜度計算
1,演算法複雜度是在 資料結構 這門課程的第一章裡出現的,因為它稍微涉及到一些數學問題,所以很多同學感覺很難,加上這個概念也不是那麼具體,更讓許多同學複習起來無從下手,下面我們就這個問題給各位考生進行分析。首先了解一下幾個概念。乙個是時間複雜度,乙個是漸近時間複雜度。前者是某個演算法的時間耗費,它是...