演算法時間複雜度的簡單推導
for(i=1;i<n;i++)①
{
y=y+1;②
for(j=0;j<=2n;j++)③
x++;④
}
① n-1+1=nfrom 1 to n+1,共n個數字 1是下界,n是上界。n雖不進入迴圈體,但是在這裡卻需要計算。從下界到上界共計算了n-1+1次
② (n-1)-1+1=n-1from 1 to n-1,共n-1個數字 迴圈從1到n-1,計算了n-1-1+1=n-1次。
③ (n-1)(2n+1-0+1)=2(n-1)(n+1)from 0 to 2n+1,共2n+1-0+1=2(n+1)個數字,然後再乘以外側迴圈(n-1)
④ (n-1)(2n-0+1)=(n+1)(2n+1)from 0 to 2n,共
So, f(n)=n+(n-1)+2(n-1)(n+1)+(n+1)(2n+1)
=4n^2+n-4
程式的時間複雜度是 T(n)=O(n^2)
============================================
a=0;
b=1; ①
for(i=1;i<=n;i++) ②
{
s=a+b; ③
b=a; ④
a=s; ⑤
}
① 2
② (n+1)-1+1=n+1from 1 to n+1,共
③ n-1+1=nfrom 1 to n,共n-1+1=n個數字。 迴圈從1到n,計算了n次
④ n-1+1=nfrom 1 to n,共n-1+1=n個數字。 迴圈從1到n,計算了n次
⑤n-1+1=nfrom 1 to n,共n-1+1=n個數字。 迴圈從1到n,計算了n次
So,f(n)=2+(n+1)+3n
=4n+3
程式的時間複雜度是 T(n)=O(n)