时间复杂度(分析程序效率)

     关于时间复杂度,参看http://blog.csdn.net/zhuchzhi/archive/2007/03/14/1529514.aspx

     总结如下:

     1、如果函数中没有n,也就是语句执行的次数是恒定的,则可知时间复杂度为O(1)

     2、如果函数中有n,但是不知道执行的次数,可以这样做:假设执行次数为m,经过m次执行后条件参数变为x<=100(假设),只需让x = 100,解除m即可,然后转成O().

     3、如何判断两个时间复杂度的高低?比如一个是O(x)=f(n),另一个是O(y)=g(n),通过两个式子相除,如果为常数则两个时间复杂度一样;若比值>1且常数增长,则O(x)比O(y)增长得快些,即高效性:O(x)<O(y);反正亦然。

     4、复杂度关系:c < log2N < n < n * Log2N < n^2 < n^3 < 2^n < 3^n < n!

     例如:

     x = 1;
     while(x<n){

         x*=2;

     }

     解:设执行次数为m,则m次后x=2^m,然后看循环条件x<n,也就是说最后x=n-1,而后推出循环。所以,n-1=2^m,解出m=根号(n-1) = (n-1)^1/2(0.5次方)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值