以下代码的时间复杂度和空间复杂度是多少?

时间:2016-04-13 11:34:39

标签: algorithm

我想知道下面一段代码的时间复杂性

for (i = 0; i < n; i++) {
    for (j = i + 1; j < n; j++) {
        printf("hi")
    }
}

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

时间复杂度只不过是程序中执行的指令数量。现在,在你的程序中你有两个循环。外循环将迭代i=0i=N-1,这是N个指令的总数,即O(N)。由于您还有一个内部循环,每个j=i+1将再次从j=N-1迭代到i

因此,时间复杂度为O(N^2)

答案 2 :(得分:0)

在内循环的每次迭代中,完成的工作是以下

  1. 名词
  2. N-1
  3. 的n-2
  4. ....
  5. ...
  6. 1
  7. 所以完成的总工作将是n +(n-1)+(n-2)+ ... + ... + 1,结果是n个自然数的总和,即n *(n + 1) )/ 2因此时间复杂度为O(n ^ 2)。由于没有使用辅助空间,因此空间复杂度为O(1)