知名高校入职笔试题

9 篇文章 0 订阅
1 篇文章 0 订阅

计算如下代码运行的次数,结果用n表示。

int x = 1, y = 1;
for (int i=1; i<=n;i++)
 for (int j=1; j<=i;j++)
   for ( int k=1; k<=j;k++) 
   {
       x = x+ y;
  }

简答分析如下:

当i=1时,j=1,k=1,次数为1;

当i=2时,j=1,k=1

               j=2,k=1,2  次数为3;

当i=3时,j=1,k=1

               j=2,k=1,2

              j=3,k=1,2,3 次数为6;

经过归纳分析,当i=m时,次数为\frac{m(m+1)}{2};

所以上述代码的总次数为\sum_{i=1}^{n}\frac{i(i+1)}{2}

S=\sum_{i=1}^{n}\frac{i(i+1)}{2},则S=\sum_{i=1}^{n}\frac{i^{2}}{2} +\sum_{i=1}^{n}\frac{i}{2}

又因为\sum_{i=1}^{n}i^{2}=\frac{1}{6}n(n+1)(2n+1)\sum_{i=1}^{n}i=\frac{n(n+1)}{2}

分别带入化简得到S=\frac{1}{6}n(n+1)(n+2)

因此时间复杂度为O(n^{3}),总次数为\frac{1}{6}n(n+1)(n+2)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值