繁体   English   中英

以下循环的时间复杂度是多少?

[英]What is the time complexity of the following loop?

我无法在网上找到答案(请注意,内部循环取决于i - 而不是n

for(int i = 1; i < n; i++) {
   for(int j = 1; j < i; j++) {
     printf("foo")
   }
 }

对于 i = 1,2,3... 的值,该语句将被打印 0、1、2.. 次,因此将它们相加将导致 O(n^2)。 我对么?

你基本上是在做这个数量的操作:

1 + ... + (n - 2) = 
(n - 2 + 1) * (n - 2) / 2 =
(n - 1) * (n - 2) / 2 =
(n² - 3n - 2) / 2

因此

O((n² - 3n - 2) / 2) = 
O(n² - 3n - 2) = 
O(n²)

代码的时间复杂度为O(n^2)

外循环的时间复杂度为O(n) ,内循环从0 to i

因此时间复杂度将是O(n^2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM