【发布时间】:2018-10-10 15:07:59
【问题描述】:
问题 1
public void guessWhat1(int N){
for (int i=N; i>0, i=i/2){
for (int j=0; j<i*2; j+=1){
System.out.println(“Hello World”);
}
}
}
第一个循环将运行 log(n)。 第二个循环将为 log(n) 运行。
上限是 O(log^2(n)。Big Θ 是多少?
问题 2
public void guessWhat2(int N) {
int i=1, s=1;
while (s<=N) {
i += 1;
s = s + i;
}
}
这个的上限是 O(n)。我不太确定 Big Θ。
如果有人能澄清这些,那就太好了。谢谢你
【问题讨论】:
-
对1)的建议:(i)注意“
n”对于不同循环的含义,(ii ) 你确定第二个(内部)循环是log n吗? -
@meowgoesthedog 感谢您的建议。一开始我以为它是(n),但是因为它乘以*2,它不会是log(n)吗?我在其他例子中也看到过类似的情况。