algorithm - n 和一个精确整数的嵌套 for 循环的复杂性?

标签 algorithm big-o

我想知道如果 for 循环遍历 n 某个指定的整数,如何找到算法的 Big-Oh 复杂性。例如,像这样的函数的复杂度是多少:

for (int i=0; i < n; i++) {
    for (int j=0; j < 100; j++) {
        for (int k=0; k < n; k++) {
            // Some O(1) operation here.
        }
    }
}

现在,我知道外循环和最内循环的复杂度都是 O(n),但是中间循环的复杂度是多少? O(100),这会减少到 O(1) 吗?

最佳答案

是的,只有中间一个是 O(1)。这意味着无论我的输入 n 是什么,它都将运行 100 次。你不能让它循环更多。

但是最外层和最内层它们依赖于n。如果 n 是 100 那么 ouermost 运行 100 次如果它是 1000000 那么是的它运行 1000000 次。

最内层的循环呢?对于最外层的每次迭代,它运行 100*n 次。所以总共会运行 100*n*n 次。

现在想想他们总共做了多少工作?

100n^2+100n+n = An^2+B

O(n^2) 将是时间复杂度。

O(10) 或 O(100) 和 O(100000) 相同吗?

好吧,我会让你免于为任何常量 C 编写更多内容 O(C) 等价于 O(1)

这里的 C 是 10 或 100 或 100000。

关于algorithm - n 和一个精确整数的嵌套 for 循环的复杂性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47001358/

相关文章:

algorithm - 多分辨率小波分解代码

c++ - 使用随机数生成器的代码的 Big-O 是什么?

java - 使用Heap的第K个最小的时间复杂度

algorithm - 这个算法的时间复杂度? (大O)

algorithm - 统一成本搜索的时间复杂度

java - 计算从 167.37 美元中赚取(钱)零钱的不同方式?

c# - 在不使用指针的情况下编辑文本文件中的一行?

php - 欧拉计划 #23 : Non-abundant sums

c++ - 迷宫求解器的复杂性

algorithm - O(|V | + |E|) 中邻接表的逆