如果我有以下代码。净:
for i=0 to n
for j=0 to n
m=i*j
next j
next i
所以我做了以下复杂性分析:
这是对的吗?同样在这种情况下,双循环可以给出O(n)复杂度?
答案 0 :(得分:0)
在最简单的情况下,两个嵌套循环的复杂性等于一个循环的复杂性乘以另一个循环的复杂性。演示几乎与您发布的内容相同。
因此,如果您希望两个嵌套循环的复杂性为O(n),则可以使其中一个循环在常量时间内执行:
for i=0 to 10
for j=0 to n
m = i*j
next j
next i
或者你可以让每个人都在O(n ^ 1/2)中执行:
for i=0 to sqrt(n)
for j=0 to sqrt(n)
m = i*j
next j
next i
或其他类型的变体。
一个特别有趣的解决方案可能是当内循环中的迭代次数取决于外循环的计数器时,但我没有给你一个例子。