混乱时间复杂

时间:2017-04-09 08:00:44

标签: c++ algorithm time time-complexity

以下计划O(n^2)的时间复杂度如何?

for (int i = n; i > 0; i += c) {
   for (int j = i+1; j <=n; j += c) {
      // some O(1) expressions
   }
}

第二个for循环不会像条件j <= n那样执行,j的值将始终大于n。
检查此link

中的第3点

2 个答案:

答案 0 :(得分:1)

如果nc是正数,那么第二个for循环将不会执行。

在我看来,那些for循环在该链接中写得不正确。

答案 1 :(得分:0)

我认为作者在这里的实际含义是

for (int i = n; i > 0; i -= c) {
   for (int j = i+1; j <=n; j += c) {
      // some O(1) expressions
}

通过这种方式,复杂性为(1 + n/c)*(n/2c)= O(n^2)