我有以下算法:
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)?
谢谢。
答案 0 :(得分:2)
我认为O(n ^ 3),迭代的极限并不重要。
答案 1 :(得分:1)
最糟糕的情况是O(n^3)
(当i
,j
和k
具有相似的价值时)。最好的情况是O(n)
,当j
和k
为0或1时:)
由于您必须为最坏情况数据做好准备(这是检查复杂性的主要原因),您应该假设O(n^3)