对同一输入数组运行两次循环的复杂度是多少?

Ash*_*gna 1 algorithm time-complexity asymptotic-complexity

我是算法的新手,对学习和实施它们非常感兴趣。
通过我能找到的所有可用在线材料学习它们。我对此有点困惑-

考虑这个代码 -

for (int i=0; i<n; i++) { ..... }
for (int i=0; i<n; i++) { ..... }
Run Code Online (Sandbox Code Playgroud)

这会有什么复杂性?
O(n) 或 O(n^2) ?

Gor*_*off 5

假设{ . . . }是常数时间,那么一个循环的复杂度是 O(n)。

两个“相邻”循环的复杂度是多少?它是 O(n) + O(n)。或者您可以将其视为 O(n + n) --> O(2n)。常数会降低复杂性,所以这是 O(n)。

嵌套循环则完全不同。所以如下:

for (int i=0; i<n; i++) { ..... }
    for (int j=0; j<n; j++) { ..... }
Run Code Online (Sandbox Code Playgroud)

将是 O(n^2)。

  • @先生。。。你缺少一些东西。`n` 没有值。它变化到无穷大。因此,常数*总是*小于“n”。常数是常数。复杂性基于 n --&gt; 无穷大的极限内发生的情况。 (2认同)