这个算法的复杂性是什么?戈

时间:2014-11-13 18:37:20

标签: big-o

我有以下算法:

for (i=0; i<=n-1; i++) {
    for (j=i; j<=n-1; j++) {
        sum = 0;
        for (k=i; k<=j; k++) {
            sum = sum + v[k];
        if (sum > max) max = sum;
        }
    }
}

第一个的复杂度是O(n),第二个是n-i,第三个是j-i + 1.

我知道O(n ^ 3)是一个上限。但是,我们可以假设这个算法的复杂性是什么?是O(n ^ 3)?

谢谢。

2 个答案:

答案 0 :(得分:2)

我认为O(n ^ 3),迭代的极限并不重要。

答案 1 :(得分:1)

最糟糕的情况是O(n^3)(当ijk具有相似的价值时)。最好的情况是O(n),当jk为0或1时:)

由于您必须为最坏情况数据做好准备(这是检查复杂性的主要原因),您应该假设O(n^3)