[英]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.