确定时间&具有一个常数因子

时间:2018-05-01 09:49:52

标签: algorithm time-complexity big-o space-complexity

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:据我所知,如果有 -

,可以计算空间复杂度
  • 变量声明
  • 数据结构
  • 分配
  • 功能调用

但上述代码中没有这些内容。那么空间复杂性会是什么?

2 个答案:

答案 0 :(得分:1)

这是O(n ^ 2)因为:

  • for 1是O(n)
  • for 2是O(1) - 最终行动数
  • for 3是O(n) - i-> n仍然是O(n)因为顺序取决于n

总结 - 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),因为只有少数变量声明(声明的变量为:countij;您也忘了申报不依赖于任何外部参数的最外层循环中的变量,即空间复杂度保持不变,与输入的大小无关。