Time/Algorithm 复杂性 - 嵌套,同时按产品递增 - 模式
Time/Algorithm Complexity - Nested while Incremented by a product - pattern
我正在尝试测量算法的时间复杂度。
该算法有一段时间内有一段时间,从1开始。好的。但问题是 i 随着产品的增加而增加。
我没有使用大 O,只计算指令。
我正在寻找一种模式。
在这个例子中,我做对了:
i = 1; -> // 1 execution
while(i<=n) { // n+1
j =1; // n
while(j<=n) { // n²
....
j = j + 1; // n² * 2
}
i = i + 1; // 2n
}
好的。我只需要总结一下。
但问题出在这种情况下:
i = 1; // 1 execution
while(i<n) { // n execution?
System.out.println("*"); // n execution?
i = i * 2; // n execution????
}
我测试了太多方法:
When n is 2 ---> The println run 1 time.
When n is 3 ---> The println run 2 times.
When n is 4 ---> The println run 2 times.
When n is 5 ---> The println run 3 times.
When n is 6 ---> The println run 3 times.
模式是什么?
我不想使用大 O 表示法。
复杂度为 O(log(n))
因为我们在每次迭代中将 i
除以 2 所以假设 while 循环将执行 m 次它们我们有 2^m<=n
这意味着 m<=log(n)
所以它是 O(log(n))
.
我正在尝试测量算法的时间复杂度。 该算法有一段时间内有一段时间,从1开始。好的。但问题是 i 随着产品的增加而增加。 我没有使用大 O,只计算指令。 我正在寻找一种模式。
在这个例子中,我做对了:
i = 1; -> // 1 execution
while(i<=n) { // n+1
j =1; // n
while(j<=n) { // n²
....
j = j + 1; // n² * 2
}
i = i + 1; // 2n
}
好的。我只需要总结一下。
但问题出在这种情况下:
i = 1; // 1 execution
while(i<n) { // n execution?
System.out.println("*"); // n execution?
i = i * 2; // n execution????
}
我测试了太多方法:
When n is 2 ---> The println run 1 time.
When n is 3 ---> The println run 2 times.
When n is 4 ---> The println run 2 times.
When n is 5 ---> The println run 3 times.
When n is 6 ---> The println run 3 times.
模式是什么?
我不想使用大 O 表示法。
复杂度为 O(log(n))
因为我们在每次迭代中将 i
除以 2 所以假设 while 循环将执行 m 次它们我们有 2^m<=n
这意味着 m<=log(n)
所以它是 O(log(n))
.