关于时间复杂度的简单归纳与总结

一、时间复杂度

一层循环(需要注意的是,不要想当然的直接看时间负责度)

i=n*n;

while(i!=1){ i = i /2};

t(循环次数) = 0、1、2、3、...

i(当前循环次数对应的i值)=n^2n^2/2n^2/4n^2/8、...

综上,i值规律为:i=n^2/2^t

而循环停止条件为i=1

将i=1代入i=n^2/2^t可得:1=n^2/2^t,即t=2log_{2}n

因此时间复杂度为0(log_{2}n)

需要注意的是,时间复杂度本质是在求t(次数)与n之间的关系

而最后得出结论必然有两个公式,一个是规律的式子,一个是停止条件的式子

二层循环

int m = 0;
for(int i = 1;i <=n; i++)
{
    for(int j = 1; j <= 2*i; j++)
    {
        m++;
    }
}

与一层循环锚定次数t不同的是,二层循环锚定的是最外层循环的i值(本质其实也是次数)

而解出时间复杂度的思路也完全不一样

i=1、2、3、4、...、n

i值对应的下一层的循环次数=2、4、6、8、...、2n

综上,i=n时,循环的执行次数=2+4+6+8+...+2n=n(2+2n)/2=n(n+1)(等差求和)

而时间复杂度=O(n^2)

这里需要注意

等差求和公式为Sn=n(a1+an)/2

等比求和公式为Sn=a1(1-q^n)/(1-q)

多层循环

这个之后再单独学习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值