【发布时间】:2021-12-07 17:13:37
【问题描述】:
如果下面的循环结构在上界分析下,它仍然计算到 O(n^2) 吗? 我很困惑,因为内部循环依赖于外部循环,并且每次外部迭代时,内部 for 循环都会少循环一次。 除了 O(n) 之外,时间复杂度函数是否会是“n!.n+C”,其中 C 是常数?我假设n!因为内循环。
for(int i=n;i>0;i--)
{
for(int j=i;j>=1;j--)
{
count++;
}
}
【问题讨论】:
-
对多个
n运行此代码,例如n = 1,2,...,15 并打印count,您会看到答案。或者将内部循环简化为count += i,您将更接近答案。然后,您可能还希望将外部循环简化为1 + 2 + ... + n之类的东西,这是一个算术序列,已知总和为n*(n+1)/2,这是两个循环被简化到最后的最终公式。跨度> -
我很困惑,因为内部循环依赖于外部循环,并且每次外部迭代内部 for 循环循环的时间都会减少一次。 -- 时间会减少一次就复杂性而言绝对不值钱——这仍然是
n^2。假装n是一百万,而不是像 10 或 20 这样的小东西来概念化它。将每次迭代的次数减少一半(例如二进制搜索),那么您就完全不同了。
标签: c++ time-complexity big-o analysis