【发布时间】:2014-09-04 04:51:32
【问题描述】:
我这里有类似 c++ 的伪代码:
for ( i = 1; i ≤ (n – 2); i++)
for (j = i + 1; j ≤ (n – 1); j ++)
for (k = j + 1; k ≤ n; k++)
Print “Hello World”;
我相当确定这个特定代码块的时间复杂度是 O(n^3),因为它是三重嵌套的 for 循环,它们都至少达到 n - 2,所以我概括了 (n-2) * (n-1) * n
但我一直在尝试解决实际的时间复杂度函数。这是我走了多远,无法继续前进:
从 i = 1 到 n-2 的总和,从 j = (i+1) 到 n-1 的总和,从 k = (j+1) 到 n 的总和。
我知道最内层循环执行 n - (j+1) 步,中间循环执行 (n-1)-(i+1) 步,外层循环执行 (n-2)-i 步.我只需要一些关于如何简化求和以得出时间复杂度函数的指示。
谢谢!
【问题讨论】:
-
C(n,3),因为它列举了从 [1,n] 范围内选择三个不同数字的方法。
标签: c++ algorithm loops time complexity-theory