Algorithm 确定时间和地点;单常数因子嵌套循环的空间复杂度

Algorithm 确定时间和地点;单常数因子嵌套循环的空间复杂度,algorithm,time-complexity,big-o,space-complexity,Algorithm,Time Complexity,Big O,Space Complexity,我的答案:O(n^2) 如果我错了,请纠正我。多谢各位 编辑:最里面的循环运行O(n)和最外面的循环。但是j=1到3呢 编辑2:根据我所学到的,如果有,可以计算空间复杂度- 变量声明 数据结构 分配 函数调用 但是上面的代码中没有这些。那么空间的复杂性是什么呢?它是O(n^2),因为: 对于1是O(n) 对于2,是O(1)-动作的最终数量 对于3是O(n)-i->n仍然是O(n),因为顺序取决于n 总结-O(n^2)。之所以是O(n^2),是因为: 对于1是O(n) 对于2,是O(1)

我的答案:O(n^2)

如果我错了,请纠正我。多谢各位

编辑:最里面的循环运行O(n)和最外面的循环。但是j=1到3呢

编辑2:根据我所学到的,如果有,可以计算空间复杂度-

  • 变量声明
  • 数据结构
  • 分配
  • 函数调用
但是上面的代码中没有这些。那么空间的复杂性是什么呢?

它是O(n^2),因为:

  • 对于1是O(n)
  • 对于2,是O(1)-动作的最终数量
  • 对于3是O(n)-i->n仍然是O(n),因为顺序取决于n
总结-O(n^2)。之所以是O(n^2),是因为:

  • 对于1是O(n)
  • 对于2,是O(1)-动作的最终数量
  • 对于3是O(n)-i->n仍然是O(n),因为顺序取决于n

总结-O(n^2)。另一种方法是将代码重写如下:

for 1 to n
 for j=1 to 3
    for i=j to n
       count++
然后,我们可以证明所有内部循环的时间复杂度都是
O(n)
,即
O(n)+O(n)+O(n)
=
O(n)

外循环的时间复杂度也是
O(n)
,对于外循环的每次迭代,我们在内循环中有
O(n)
迭代,使其
O(n^2)


此外,空间复杂度是
O(1)
,因为只有少数不依赖于任何外部参数的变量声明(声明的变量是:
count
i
j
;而且您忘了在最外层循环中声明变量),例如。,不管输入的大小,空间复杂度保持不变。

另一种方法是按照如下方式重写代码:

for 1 to n
 for j=1 to 3
    for i=j to n
       count++
然后,我们可以证明所有内部循环的时间复杂度都是
O(n)
,即
O(n)+O(n)+O(n)
=
O(n)

外循环的时间复杂度也是
O(n)
,对于外循环的每次迭代,我们在内循环中有
O(n)
迭代,使其
O(n^2)


此外,空间复杂度是
O(1)
,因为只有少数不依赖于任何外部参数的变量声明(声明的变量是:
count
i
j
;而且您忘了在最外层循环中声明变量),例如。,不管输入的大小,空间复杂度保持不变。

可能的重复是正确的,因为第二行是一个常数,不会影响大O复杂度谢谢@silleknarf的回答。是的。你说得对。复杂性是精确的(3*n*(n+1))/2,在复杂性世界中是O(n^2)。嗨,欢迎来到s-O!你的问题究竟是什么还不清楚:它是如何计算复杂性的?你对这个例子中的计算有什么特别的疑问吗?仅仅给出你的答案(不工作)并询问它是否正确并不是一个好问题,因为它不清楚你的具体问题是什么(除了大概是交正确的家庭作业).可能重复您的回答是正确的,因为第二行是一个常数,不会影响big-O复杂性谢谢@silleknarf的回答。是的。你说得对。复杂性是精确的(3*n*(n+1))/2,在复杂性世界中是O(n^2)。嗨,欢迎来到s-O!你的问题究竟是什么还不清楚:它是如何计算复杂性的?你对这个例子中的计算有什么特别的疑问吗?仅仅给出你的答案(不工作)并询问它是否正确并不是一个好问题,因为不清楚你的具体问题是什么(除了可能交正确的作业)。我补充了我对空间复杂性的想法。你也能帮我吗?谢谢,我补充了我对空间复杂性的看法。你也能帮我吗?非常感谢。