c – 在Big O表示法中,您如何考虑对其他方法的调用?
作者:互联网
假设我们有这两种方法:
void example(int p){
p += 10;
p = exampleTwo(p);
}
int exampleTwo(int p){
int pp = 0;
for(int i = 0; i < p; i++){
pp++;
}
return pp;
}
方法exampleTwo具有线性运行时.它的运行时间是O(n).
那么,方法示例的大O符号是什么,考虑到它调用exampleTwo?
我想它也是O(n),但我不确定.
解决方法:
example()没有循环,它对exampleTwo()没有任何额外的作用,因此它具有相同的复杂度顺序,即O(n),例如ExampleTwo().
如果example()更改为:
int example(int p){
int sum = 0;
for(int i=0; i<p; ++i){
sum += exampleTwo(p);
}
return sum;
}
那么复杂性现在是O(n²):随着p的增大,要做的工作量增加了p的平方.