浙大数据结构与算法之时间与空间复杂度判断

时间复杂度与空间复杂度的分析:

时间复杂度:

if ( A > B )

{    

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

      for ( j=N*N; j>i; j-- )   

          A += B;

}

else {     

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

              for ( j=N*2; j>i; j-- )  

             A += B;

if内的循环体时间复杂度为:N^3;

else内循环体时间复杂度为: N^2;

浙大数据结构陈越老师的分而治之的思想求解最大子列和的问题:

时间复杂度:

求解时间复杂度要用到递归的思想:

T(n)  =  2 T(n / 2 )  + c*n; 将T(n / 2 ) 继续往下换:

T(n)  =  2( 2 T(n / 2^2) + c*n/2) +  c*n = 2^2T(n / 2^2) + c*2*n;

则归纳推理可知,当n / 2^k = 1 时, 

T(n)  = 2^k T(1) + c*k*n,  其中2^k = n ,得k = (log2 n);

则最终:

T(n)  = n + c*(log2 n)*n   = n*log n;

空间复杂度:

每次对该数据两边进行一次递归,都会把数据分成2半,知道每组数据都是1个则停止递归。可知递归k次将n个数据彻底分解。则有k =  log n;则调用了k次 “分”函数 , 则递归的空间复杂度为O(log n);

递归的最后结果是n个数据都被单独的函数调用了1次,可知函数调用了n次,则可知这个算法的整体的空间复杂度是S(n + log n) = S(n);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值