algorithm - 在循环 block 中包含循环的 else block 的复杂性

标签 algorithm performance big-o complexity-theory

我试图找到每个语句的频率和这个方法的大 o。

但我正在为 else 部分苦苦挣扎,我知道我们采用了 if 和 else 的最糟糕的复杂性

但从逻辑上讲,在这种情况下,我是否已将外循环 (n) 的频率乘以 else 循环 (n+1) 的频率?虽然我知道 else block 只会执行一次,当 i=0 时 但是当我们遵守规则时,我们必须乘以它 所以我被困在这里,我不知道在这种情况下该怎么办,我希望你们能帮助我 谢谢!

int i, j, sum = 0;
for (i = 0 ; i < n; i++)
if ( i != 0)
    Sum += i;
else
    for (j = 0 ; j< n; j++)
        Sum + = j;

最佳答案

所以,你有一个 O(n) 的循环和一个 O(n) 的循环。 但是在您的代码中,我们只执行一次 else 语句。

所以你有一个 for 循环,在 if 中你做 O(1) 工作 (n - 1) 次,并且一次 (i == 0) 你做 O(n) 工作(当到达 else 语句时)

所以复杂度为 O(n) = (n - 1) * O(1) + O(n) ~ O(2n) 这也是 O(n) 因为我们在进行渐近分析时删除了常量。

关于algorithm - 在循环 block 中包含循环的 else block 的复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52506091/

相关文章:

java - 在调用 Thread.sleep() 后,System.nanoTime() 测量耗时的准确性降低

algorithm - 图算法,近似算法

algorithm - 生成半随机序列的有效方法

php - 许多数据库调用加载较少的数据,还是较少的数据库调用加载更多的数据?

performance - 渐进式渲染和 SEO

algorithm - 复杂性和大 O 符号

c# - Linq OrderBy().ThenBy() 方法序列的时间复杂度是多少?

algorithm - 在 3 维中分段相交

c# - 随机加权选择

algorithm - 支持 Add 和 Partial-Sum 的数据结构