我试图找出以下嵌套for循环的大估计值。
for(int i = 10; i to 100; i++){
for(int j = 1; j to i; j++){
for(int k = 1; k to j; k++){
s=s+i+j;
}
}
}
我在想这两个内部循环运行n次,但我不确定第一个循环。
Big O对此代码的估计是什么?
答案 0 :(得分:4)
从技术上讲,复杂度为O(1)
,因为100
是常量,因此操作数始终相同。如果作者认为100
是一个参数,可以是一些变量,即
int n = 100; //or read it somewhere
for (int i = 10; i < n; ++i) {
....
}
然后复杂性为O(n^3)
。第一个循环体执行n - 10
次O(n)
,第二个循环体从n - 10
次执行到一次,再次为O(n)
,并且对于最里面的循环可以说明相同,因此给我们O(n^3)
。
有助于理解大O符号的文章:Big O notation
答案 1 :(得分:1)
复杂度为O(1)
,因为此处没有n
且操作数可以精确计算