这两个时空复杂度有什么不同吗?
for (int i=0; i<= 100; i++) {
System.out.println("hi");
}
for (int i=100; i>= 0; i--) {
System.out.println("hi");
}
如果循环更大更复杂怎么办?就像i <= 1000000
答案 0 :(得分:3)
不,两者之间的空间或时间复杂性没有差异。
我很想知道你为什么会这样。
P.S。当然,如果实际代码不同,那么答案也可能不同。
答案 1 :(得分:0)
因此,时间复杂度没有差异,即O(N)。
决定采用哪种方法是您的具体设计。例如,如果我必须找到给定数字的最大素因子,我可能会使用第二种方法。所以基本上它是(特定项目的)设计。
答案 2 :(得分:0)
只要你没有用一些逻辑(取决于索引变量)突破循环,空间/复杂性应该没有区别。
如果你需要迭代索引的每一个值,那么按相反的顺序进行就像前进一样。
答案 3 :(得分:0)
对于这个特定的例子不是。对于较大的阵列,在某些系统上可能会较慢。
通常系统会针对按顺序访问内存进行优化。只要内存访问模式是可预测的,两个循环都具有相同的效率,但在较旧的机器或不同的体系结构上,事情可能会有所不同。
因为空间复杂性不是(我错过了阅读问题)