for 1 to n
for j=1 to 3
for i=j to n
count++
我的回答:O(n ^ 2)
如果我错了,请纠正我。谢谢
编辑:Innermost循环运行O(n)以及Outermost循环。但是j = 1到3呢?
编辑2:据我所知,如果有 -
,可以计算空间复杂度但上述代码中没有这些内容。那么空间复杂性会是什么?
答案 0 :(得分:1)
这是O(n ^ 2)因为:
总结 - O(n ^ 2)。
答案 1 :(得分:1)
另一种解决方法是按如下方式重写代码:
for x= 1 to n
for i = 1 to n
count++
for i = 2 to n
count++
for i = 3 to n // considering 1 to 3 => [1, 3]
count++
然后,我们可以争辩说所有内环的复杂度都是O(n)
,即O(n) + O(n) + O(n)
= O(n)
。
外部循环的时间复杂度也是O(n)
,对于外部循环的每次迭代,我们在内部循环中进行O(n)
次迭代,使其成为O(n^2)
。
此外,空间复杂度为O(1)
,因为只有少数变量声明(声明的变量为:count
,i
,j
;您也忘了申报不依赖于任何外部参数的最外层循环中的变量,即空间复杂度保持不变,与输入的大小无关。