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

 

 

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)

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值