反向循环更好吗?

时间:2013-09-06 09:48:51

标签: java loops for-loop

这两个时空复杂度有什么不同吗?

for (int i=0; i<= 100; i++) {
    System.out.println("hi");
}

for (int i=100; i>= 0; i--) {
    System.out.println("hi");
}

如果循环更大更复杂怎么办?就像i <= 1000000

时一样

4 个答案:

答案 0 :(得分:3)

不,两者之间的空间或时间复杂性没有差异。

我很想知道你为什么会这样。

P.S。当然,如果实际代码不同,那么答案也可能不同。

答案 1 :(得分:0)

因此,时间复杂度没有差异,即O(N)。

决定采用哪种方法是您的具体设计。例如,如果我必须找到给定数字的最大素因子,我可能会使用第二种方法。所以基本上它是(特定项目的)设计。

答案 2 :(得分:0)

只要你没有用一些逻辑(取决于索引变量)突破循环,空间/复杂性应该没有区别。

如果你需要迭代索引的每一个值,那么按相反的顺序进行就像前进一样。

答案 3 :(得分:0)

对于这个特定的例子不是。对于较大的阵列,在某些系统上可能会较慢。

通常系统会针对按顺序访问内存进行优化。只要内存访问模式是可预测的,两个循环都具有相同的效率,但在较旧的机器或不同的体系结构上,事情可能会有所不同。

因为空间复杂性不是(我错过了阅读问题)