【发布时间】:2014-03-19 15:22:44
【问题描述】:
它只检查了 1/3n 次 for 循环,所以我猜它在技术上仍然是线性的?但是我真的不明白为什么它不是 O(logn),因为很多时候运行时间为 O(logn) 的代码最终会检查大约 1/3n。 O(logn) 每次总是将选项除以 2 吗?
int a = 0;
for (int i = 0; i < n; i = i+3)
a = a+i;
【问题讨论】:
-
当你加倍n时,你的循环运行的次数是否加倍?还是添加一个常数?
-
你的例子是 O(n);因为它是线性的。考虑像 binary search 这样的对数算法。
-
这是有道理的霍布斯。谢谢你说清楚
-
小挑剔,但
i = i + 3后面的;是语法错误。 -
我的错,不是故意写的