java:这个do-while代码片段的大哦这个顺序?加上紧上限

时间:2017-01-16 00:46:35

标签: java big-o upperbound

我知道这很容易但是我的教科书没有谈论使用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命令吗?它们和循环一样吗?

1 个答案:

答案 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 你试图计算的打印输出。