在 Big O 表示法中,您如何考虑对其他方法的调用
In Big O notation, how do you factor in calls to other methods?
假设我们有以下两种方法:
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)。
那么,考虑到方法example
调用exampleTwo
,方法的大O表示法是什么?
我想它也是O(n),但我不确定。
对于子例程,应将顺序乘以调用次数的顺序。例如,如果一个函数称为 O(n) 次,并以 O(log n) 时间运行,则总顺序为 O(n log 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
的平方。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用一个考虑到std::map中键值的滚动或换行的键
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 函数何时会在c++中包含stack_Unwind_Resume调用
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 在其他文件中创建类时在 c++ 项目中不起作用
- 类与私有变量的其他类之间的线程安全性
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- Python中的for循环与C++有何不同
- C++:考虑但不调用构造函数的特殊性
- GlobalAlloc而不是其他分配方法
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 结构和双指针隐藏在其他结构中,多层混淆
- 考虑到其他好处,关键字'auto'真的有助于简化调试C++吗?
- 在查找命名空间名称的过程中,可以考虑与命名空间名称不同的其他名称
- 在 Big O 表示法中,您如何考虑对其他方法的调用