我想知道下面一段代码的时间复杂性
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
printf("hi")
}
}
答案 0 :(得分:0)
http://www.geeksforgeeks.org/analysis-of-algorithms-set-4-analysis-of-loops/
http://www.geeksforgeeks.org/analysis-of-algorithms-set-4-analysis-of-loops/
我认为以下链接已完全用于此问题:)
答案 1 :(得分:0)
时间复杂度只不过是程序中执行的指令数量。现在,在你的程序中你有两个循环。外循环将迭代i=0
到i=N-1
,这是N个指令的总数,即O(N)。由于您还有一个内部循环,每个j=i+1
将再次从j=N-1
迭代到i
。
因此,时间复杂度为O(N^2)
。
答案 2 :(得分:0)
在内循环的每次迭代中,完成的工作是以下
所以完成的总工作将是n +(n-1)+(n-2)+ ... + ... + 1,结果是n个自然数的总和,即n *(n + 1) )/ 2因此时间复杂度为O(n ^ 2)。由于没有使用辅助空间,因此空间复杂度为O(1)