algorithm - 双for循环的运行时间复杂度

标签 algorithm big-o time-complexity

我对以下算法有些困惑。特别是,我不明白为什么第一个是O(n),第二个是O(n^2)。我唯一的直觉可能是第一个算法的内部和外部循环没有“链接”。其次,我可以直观地看到第二个算法是 O(n^2),但是我们如何找到一些常数 c1、c2 来证明 f(n) 是 n^2 的 big-0 和 little-0?

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

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

最佳答案

要正式推导增长顺序,您可以按以下方式进行:

enter image description here

对于c' 的情况,当i = 0 时,内部循环不会执行,因此,解决方案是将赢得的外部循环“迭代”外部化'影响内循环。

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

相关文章:

excel - QLikView 计算维度与聚合 w.r.t.数据透视表中的其他维度

java - 需要帮助理解三步动态编程/递归问题

algorithm - 这种愚蠢的最坏情况下的时间复杂度?

algorithm - 按组件排序多值 (SIMD) 数组

algorithm - 如何使空间复杂度为 O(1)

algorithm - 找到覆盖二进制矩阵的最小矩形集

java - 如何理解或解释 Quicksort 中对分区的第一次调用?

algorithm - n ≠ Θ(logn) 吗?

java - 时间复杂度(Java,快速排序)

c - 使用递归关系证明函数具有指数运行时间?