时间复杂度的混乱

Confusion in time complexity

本文关键字:混乱 时间复杂度      更新时间:2023-10-16

以下程序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。
检查此链接中的第三点

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

在我看来,那些 for 循环在该链接中写错了。

我认为作者在这里的实际意思是

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)