这是一个正常的嵌套循环,具有n^2
复杂性
for i in range(n):
for j in range(n): # <-- dependent on n
print(i,j)
我很难理解为什么下一个循环也有n^2
复杂性,即使它打印的语句更少
for i in range(n):
for j in range(i): # <-- now it is dependent on i
print(i,j)
有什么想法吗?
让我们计算最里面的表达式执行的次数,所以我们这样说:
(对于j-loop,终止条件用粗体突出显示。当j-loop到达它时,最里面的表达式将不会被执行,我们将开始i-loop的下一次(如果有)迭代。)
因此,我们将有13。。。n
。这是1/2(n*(n1))
,这是n^2
。因此,时间复杂度仍然是n^2。
我有一个嵌套的for循环: 如何找到这个循环的时间复杂度。 我在考虑外部循环,它从0运行到n^2(独占),所以它运行n^2 1次。 对于内部循环,它取决于i,这就是我迷失的地方。有什么指示吗?
我很难理解算法分析,尤其是下面的例子: 所以我的理解是,外循环是,当我乘以一个常量时,我不确定是否有任何区别。 不过,最让我困惑的是内部循环。我认为它是,因为j被常数递减,但我不确定和
这段代码的时间复杂度是多少?外循环运行n次,但我不确定内循环。如果内环对于i的每个值一直运行到n,它能是O(n^2)吗?
我的困惑是- 如果我把n+(n^2-1)*O(1)写成n+O(1)+O(1)+........+O(1),那么我可以忽略低阶项,复杂性将是O(n),但是另一个推理可以是一个常数的工作量正在做n^2次,所以时间复杂性应该是O(n^2) 在这个问题中也发生了类似的事情-带有if语句的嵌套循环的时间复杂度O(N):O(N^4)?
以下示例循环的时间复杂度为O(n^2),有人能解释为什么是O(n^2)吗?因为这取决于c的价值。。。 循环1--- 回路2--- 如果c=0;然后它运行无限次,就像增加c值一样,内部循环的运行次数也会减少 有人能给我解释一下吗?
对于下面的循环, 时间复杂度是多少,我应该怎么想?我的猜测是外环总共运行。内环运行次。因此,时间复杂度应该是。 我说得对吗? 提前感谢。