algorithm - 嵌套 for 循环的时间复杂度,内部迭代变量依赖于外部迭代

标签 algorithm loops for-loop time-complexity

这是循环结构:

for (int i = 1 ; i < n ; i++) {
    for (int j = 0 ; j < n ; j += i) {
        // do stuff
    }
}

我的猜测是 O(nlogn) 因为它显然不能是 O(n^2) 因为 j 的增量正在增加并且它显然不能是 O(n sqrt(n)) 因为增量不是那么高。但我不知道如何形式化地证明它。

最佳答案

每次内循环的时间复杂度是根据i的值为n/i。因此,总时间为 n + n/2 + n/3 + ... + n/n = n(1+1/2+1/3+...+1/n)。 正如我们所知,1+1/2+1/3+...+1/n 是调和序列并且渐近为 log(n)。因此,该算法的运行时间为 O(nlog(n))

关于algorithm - 嵌套 for 循环的时间复杂度,内部迭代变量依赖于外部迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49236196/

相关文章:

algorithm - 一个动态规划问题

java - Java 中 for 循环末尾的额外分号概念有问题

json - 如何使用 'For Each' 在 LogicApp 中检索和更新 JSON 值

postgresql - 循环遍历 RECORD 的列

algorithm - 数独板检查算法 - 除了重复之外还有什么要检查的吗?

algorithm - 使用递归关系查找时间复杂度

python - 为什么我在循环 pandas 数据帧时收到此错误

java - 通过循环查找质数

python - 如何迭代列表的笛卡尔积

用于可变大小数组的 C++ 合并排序算法