algorithm - for循环的复杂度

标签 algorithm asymptotic-complexity

这是我在网上找到的:

for (i=1; i<=n*n; i++)
    for (j=0; j<i; j++)
        sum++;

执行 sum++ 的确切次数:

Sum{i=1, i=n^2}= (n^2)*((n^2)+1)/2 ∈ Θ(n^4)

报价结束。

虽然我同意这个结果,但在我看来这只考虑了第一个循环,即 i 上的循环,而不是 j 上的循环。换句话说,从数学上讲,我们会得到与代码相同的结果:

for (i=1; i<=n*n; i++)
    sum++;

即,仍然:Sum{i=1, i=n^2}= (n^2)*((n^2)+1)/2 ∈ Θ(n^4) 而这段代码显然是 Θ(n^2)(正好运行 n^2 次)

有人能解释一下我错过了什么吗?

最佳答案

假设在递增值的同时执行了恒定数量的操作 c

enter image description here

关于algorithm - for循环的复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41344618/

相关文章:

algorithm - 如何使用 Spatial CIELAB (S-CIELAB) 包含 alpha channel 来计算色差?

java - 从数据文件中读取数据点

java - 一旦一个对象被取出来更新它的优先级,如何保持一个对象在优先级队列中的优先级?

c - 如何在 O(n) 时间内找到在 SORTED 数组中出现奇数次的数字?

algorithm - 为什么 O(2n^2) 和 O(100 n^2) 在算法复杂度上与 O(n^2) 相同?

algorithm - '3 jugs of water' 的状态图

algorithm - 构建二叉树的渐近复杂度

java - getJSONObject 和 getJSONArray 方法的复杂性是什么?

algorithm - 渐近分析比较 f 和 g

java - N个有序元素的组合