估计算法运行时间

解:两个n阶矩阵A与B乘积的计算过程可描述如下(计算结果存储于矩阵C中),可根据每条语句的执行次数估算下述运算过程所需的计算时间开销。

S1:  for(i = 0; i < n; i++){                          // S1行语句被执行(n+1)次

S2:       for(j = 0; j < n; j++){                     // S2行语句被执行n * (n+1)次

S3:            C[i][j] = 0;                                // S3行语句被执行n * n次

S4:            for(k = 0; k < n; k++){             // S4行语句被执行 n * n * (n+1)次

S5:                 C[i][j] += A[i][k] * B[k][j];     // S5行语句被执行 n * n * n次

S6:            }

S7:        }

S8: }

执行一个for循环不仅仅需要n次,最后一次判断不符合条件的也要算进去,当执行到三个for循环的里面时,只有符合小于n的条件的才会走进去,所以是n^3,
综上,若执行每行语句需要一个单位的时间(即O (1)),那么在上述运算结束后,所需的总时间开销约为:

  [(n+1) + n * (n+1) + n * n + n * n * (n+1) + n * n * n] * O (1) = O (n^3)。
  计算O()看最高位的,其他可以省略

在这里插入图片描述2^k=n
n>=2^0
所以 k>=0,k是一个正整数,要被执行k+1次
求出来是一个等比数列,求出结果 2n-1

在这里插入图片描述这是两个for循环嵌套,
外面的for执行了k次
里面的for执行了j^2次
1^2 + 2^2 + … + k^2 + (k+1)^2= (1/6) * n(n+1)(2n+1)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值