我知道这很容易但是我的教科书没有谈论使用do-while循环的Big-Oh命令,也没有任何其他算法源。
此问题表明以下代码片段在变量“n”上进行参数化,并且还需要一个紧密的上限。
int i=0, j=0;
do {
do {
System.out.println("...looping..."); //growth should be measured in calls to println.
j=j+5;
} while (j < n);
i++;
j = 0;
} while (i < n);
任何人都可以帮我解决这个问题并在do-while循环中解释Big-Oh命令吗?它们和循环一样吗?
答案 0 :(得分:2)
使用嵌套循环和big-O的好格言是
“如有疑问,请从内到外工作!”
以下是您发布的代码:
int i=0, j=0;
do {
do {
Do something
j=j+5;
} while (j < n);
i++;
j = 0;
} while (i < n);
让我们看一下内循环。它大约运行n / 5次,因为j从0开始,每步增长5。 (我们还看到j总是在循环开始之前重置为0,无论是在循环之外还是在内循环结束时)。因此,我们可以用基本上表示“我们关心的做Θ(n)操作”的内容替换内部循环,如下所示:
int i=0;
do {
do Θ(n) operations that we care about;
i++;
} while (i < n);
现在我们只需要了解它的工作量。请注意,这将循环Θ(n)次,因为我计算0,1,2,...,直到n。净效应是这个循环运行Θ(n)次,并且因为我们做每次迭代时我们关心的Θ(n)运算,所以净效应是Θ(n 2 你试图计算的打印输出。