您的位置:首页 > 其它

算法时间复杂度的简单推导

2011-06-09 16:25 155 查看
 

 
for(i=1;i<n;i++)          
                      ①  
{
                y=y+1;                               ②
                for(j=0;j<=2n;j++)            ③ 
                                x++;                   ④
 
}
 
 
①  n-1+1=n                                          from 1 to n+1,共n个数字   1是下界,n是上界。n虽不进入循环体,但是在这里却需要计算。从下界到上界共计算了n-1+1次
② (n-1)-1+1=n-1        from 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,共2n-0+1=2n+1 个数字, 然后再乘以外侧循环(n-1)

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+1        from 1 to n+1,共n+1-1+1=n+1个数字  循环的下界是1,上界是n+1,同样不进入循环体,却需要计算。从下界到上界共计算了n+1次。
③ n-1+1=n                from 1 to n,共n-1+1=n个数字。   循环从1到n,计算了n次
④ n-1+1=n                   from 1 to n,共n-1+1=n个数字。   循环从1到n,计算了n次
⑤n-1+1=n                    from 1 to n,共n-1+1=n个数字。   循环从1到n,计算了n次
 
So,f(n)=2+(n+1)+3n
     =4n+3
 

程序的时间复杂度是 T(n)=O(n)
 
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 ini