【发布时间】:2010-10-20 11:56:37
【问题描述】:
int num = n/4;
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= n; j++) {
for (int k = 1; k <= n; k++) {
int count = 1;
}
}
}
根据我读过的书,这段代码应该是O((n^3)/4)。但显然不是。要找到嵌套循环的 Big-O,你应该乘以界限吗?所以这个应该是 num *n *n 或 n/4 *n *n。
【问题讨论】:
-
智能编译器可能会将这个循环嵌套优化为 O(1),因为它实际上并没有做任何事情。
-
除非另有说明,否则“智能”编译器将不理会它 - 它可能是嵌入式系统中的一个定时循环,用于控制通过透析机的血流速度:-)
-
有比创建永远不会有定义执行时间的无意义循环更好的方法来实现计时(几乎用任何语言)!