【发布时间】:2015-02-16 19:24:24
【问题描述】:
我对以下程序的时间复杂度有疑问。我知道为什么第一个 for 循环是 n + 2 但对于第二个 for 循环为什么是 (n+1)/2?
// 循环示例 // 这不是一个完全编码的程序,仅用于循环时间复杂度分析
for (int i=n; i>=0; i--) //n + 2
for (int j=i; j<n; j++) // (n+2)(n+1)/2
cout << i << “,” << j <<endl; //(n+1)(n)/2
【问题讨论】:
-
您的代码被截断了,可能是在复制和粘贴过程中。您能否编辑问题以显示代码?
-
你的内循环,分开来看,总是 O(n)。请注意,O(n) 中的
n不与您的变量n相同,它只是任何变量编号的标准名称。 -
等等...n+2 和 (n+1)/2 怎么样?我真的不知道如何回答这个问题。
-
由于愚蠢的智能引号,您的代码将无法编译
标签: c++ for-loop time complexity-theory time-complexity