算法复杂度n *(m + n)^ 2

时间:2015-05-07 12:01:53

标签: algorithm time-complexity

我写了一个代码如下:

for( i = 0 ; i < n; i++){
    for( j = 0; j < m + i; j++){
        for( k = 0; k < m + i; k++){
            dosomething();
         }
     }
}    

所以平均时间复杂度为O(n *(m + n / 2)*(m + n / 2))?什么是最糟糕的大O呢?我很困惑。

2 个答案:

答案 0 :(得分:2)

您的算法在最坏情况,最佳情况和平均情况下的复杂性都是相同的。

对于每个大小(n,m)的输入,它总是执行相同数量的指令。

  • 最糟糕的情况是您将对某些输入n,m执行的最大步骤数。这是O(n*(n+m)^2),通过显示中间和内部循环比从n+m/2n+m花费更多时间,并且因为它在O(n*(n+m)^2)中,可以很容易地证明这一点,然后是算法。
  • 同样 - 对于最佳情况,必须为给定的n,m采取相同数量的步骤。
  • 平均情况是预期的大小n,m输入的操作次数 - 但确切的输入在此处无关紧要,只有nm的大小 - 所以这将保持不变

答案 1 :(得分:0)

有条不紊地使用Sigma表示法会给你以下内容:

enter image description here