算法的度量-----时间复杂度问题的计算

 一。用到的数学定义及数学公式

    1. 若存在正常数c和n0,使得当N≥n0时,T(N)≤cf(N),则机位T(N)=O(f(N))。例如,一个程序的执行时间为T(n)=5n²+4,则这个程序的时间复杂度为T(n)=O(n²).

 

     2.T₁(N)=O(f(N)),且T₂(N)=O(g(N)),则

               T₁(N)+T₂(N)=O(max(f(N),g(N)));

               T₁(N)*T₂(N)=O(f(N)*g(N));

 

二。运行时间的计算

     1.赋值语句的运行时间

     每条赋值语句的运行时间为1。          

     例如:  x=3;   //运行时间O(1)

    

     2.for循环的运行时间

     一次for循环运行时间至多是该for循环语句的运行时间乘以迭代的次数

     例如: for(i=0;i<N;i++)  k++;   //运行时间为O(1)*O(N)=O(N)

    

     3.嵌套for循环的运行时间

     从里面到外面分析这些循环。每一层的运行时间等于该层的for循环语句的运行时间乘以循环内

     所有的for循环的运行时间

     例如: for(i=0;i<N;i++) 

                               for(j=0;j<N;j++)

                                        k++;

     运行时间为O(N)*O(N)=O(N²)

 

     4.顺序语句的运行时间

     将各个语句的运行时间求和即可,根据T₁(N)+T₂(N)=O(max(f(N),g(N)))法则,总的运行时间为其中的最大值

     例如: for(i=0;i<N;i++) 

                               for(j=0;j<N;j++)

                                        k++;

                    for(i=0;i<N;i++)  k++;           

                  总运行时间为O(N)+O(N²)=O(N);

 

      5.if else语句的运行时间

     对于以下程序片 段

     if(condition)

          S1

     else

          S2

     他的运行时间不超过判断再加上S1与S2中的运行时间的最长者。

     例如:

     if(k>0)

     {

           for(i=0;i<N;i++)  k++;           

     }else

     {

          for(i=0;i<N;i++) 

                               for(j=0;j<N;j++)

                                        k++;

     }

     运行时间为max(O(N+1),O(N²+1))=O(N²+1)=O(N²);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值