【发布时间】:2014-02-04 17:36:40
【问题描述】:
我对以下算法有些困惑。特别是,我不明白为什么第一个是O(n),第二个是O(n ^ 2)。我唯一的直觉可能是第一个算法的内部和外部循环没有“链接”。其次,我可以直观地看到第二种算法是 O(n^2),但是我们如何找到一些常数 c1,c2 来证明 f(n) 是 n^2 的 big-0 和 little-0?
sum = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
sum++;
sum = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < i; j++)
sum++;
【问题讨论】:
-
如果在第一个算法中嵌套了for循环,那不是
O(n)而是O(n^2) -
好吧,很有趣 - 也许我的教授在他的答案中犯了一个错误
-
第一个看起来是O(n^2),第二个看起来是O(n*m)
-
@user2485710 好吧,对于 m = n。
-
@delnan 是的,但这是一个非常奇怪的循环,也许这是老师真正想为学生提供的陷阱/陷阱之一。
标签: algorithm big-o time-complexity