估计算法运行时间

解:两个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)

猜你喜欢

转载自blog.csdn.net/weixin_44822939/article/details/104819184