【发布时间】:2013-01-17 07:35:06
【问题描述】:
for(i=0; i<n; i++)
{
a[i]=0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
a=3;
}
}
}
这是一个三重嵌套循环。我的书指出运行时间是: O(N) + O(N^2) = O(N^2)
不应该是 O(N^3) 吗?所有 3 个循环都相互依赖。它将运行 N*N*N 次。
【问题讨论】:
-
这不是 n^3,因为变量 i 在内部循环中被重用,使其成为 n^2。
-
不确定他们从哪里得到 O(n)。
-
不,不是。最外层循环和第二个循环都使用 i。当第二个循环完成运行时,(O(n^2)),最外面的循环将退出。除非,当然,这是一个错字......
-
@G.Bach - 您应该将其作为答案提交。你值得称赞。
-
我相信不应该有最外面的大括号。因此,您有一个用零填充 a[] 的循环,后跟是一个双循环。
标签: c for-loop time-complexity nested-loops