其他分享
首页 > 其他分享> > c – 在Big O表示法中,您如何考虑对其他方法的调用?

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().

如果exam​​ple()更改为:

int example(int p){
  int sum = 0;
  for(int i=0; i<p; ++i){
    sum += exampleTwo(p);
    }
  return sum;
}

那么复杂性现在是O(n²):随着p的增大,要做的工作量增加了p的平方.

标签:c,big-o
来源: https://codeday.me/bug/20190725/1531064.html