发布此问题的原因comes from here
以下代码片段之间是否存在Time complexity
差异?
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
for (int j = 1; j < 2; j++) {
if (i < 100)
System.out.println("Hi");
}
}
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if (i < 100)
System.out.println("Hi");
}
}
两者之间的代码差异是Snippet B
不包含来自Snippet A
的内部循环,它不会用于任何目的,因此被删除。
Snippet A:
和Snippet B:
都需要O(n)表示n
space complexity
可能存在一些差异,因为我们在j
Snippet A
我在VBA
中测试了此循环结构的相似版本,Snippet B
比Snippet A
是因为空间或时间复杂度的差异还是两者兼而有之?
答案 0 :(得分:3)
技术,您的两个示例都会在固定时间内运行。
如果您要切换第一个for循环以计数N或某个变量,那么它们都将以O(N)运行。时间复杂度没有差异,因为它们都是O(N)加上恒定时间操作,导致只有O(N)。
代码片段A较慢的原因是因为仍然存在循环开销(递增并比较j)。
答案 1 :(得分:1)
初始化,比较和递增j的开销会减慢A,但我没有看到内循环的实际应用。
这肯定会在生产代码中被删除,因为它会降低可读性。