Big -Oh Computation(复习帮助)

时间:2012-10-17 18:42:57

标签: data-structures big-o

好的,所以我今天晚些时候有一个中期,我正在审查的其中一个项目是大O.现在,我在当天做了功课,得到了100%....但我现在找不到它,我不确定我在做什么。 Sooo可以有人给我一个关于我做错了什么的解释......如果我做得对......好吧也许你知道我为什么怀疑自己? 谢谢!

另外,我记得在做作业之前我正在使用总结,我会从内到外工作。当我完成每个求和时,我使用了一些“forumla”来计算最高n,然后保持该值并继续下一个求和,依此类推,直到总结完成为止。

问题1.

sum = 0;
for (i = 0; i < n; i++)
    sum++;

所以,因为我忘记了这个的总和方面,我的直觉告诉我这是O(N),因为最大运行时间是N次......因为它只是一个用于循环。

问题2。

sum = 0;
for (i = 0; i < n; i++)
    for (j = 0; j < n; j++)
        sum++;

对于这个,我“认为”对于最高运行时间它是O(N ^ 2),因为两个循环都依赖于n,并且它可以在每个if循环的N * N处最大化。

问题3。

sum = 0;
for (i = 0; i < n; i++)
    for (j = 0; j < n * n; j++)
        sum++;

这就是我被卡住的地方......我觉得我实际上需要使用求和布局以及添加它们的公式。最内部的循环可以在n * n处最大化,因此n ^ 2。最重要的是,它可以在最外面的循环中再次最大化N ...所以我猜0(N ^ 3)。

问题4。

sum = 0;
for (i = 0; i < n; i++)
    for (j = 0; j < i; j++)
        sum++;

同样,我在这一点上更加迷失。内循环可以最大化i次...然而,这依赖于i,这依赖于N ....所以...我看到三个最大化的变量,我确实不确定如何比较它们以找到最大化运行。 (我真的需要记住求和设置和公式)。

同样适用于下一个问题,不知道从哪里开始,我宁愿不尝试,因为我不想在脑子里弄错思路。我很肯定,一旦我再次看到这个公式,它会立即点击,因为我之前得到了它......我只是以某种方式失去了它。 任何帮助表示赞赏!

问题5:

sum = 0;
for (i = 0; i < n; i++)
    for (j = 0; j < i * i; j++)
        for (k = 0; k < j; k++)
        sum++;

问题6:

sum = 0;
for (i = 1; i < n; i++)
    for (j = 1; j < i * i; j++)
        if (j % i == 0)
           for (k = 0; k < j; k++)
               sum++;

1 个答案:

答案 0 :(得分:0)

对于问题4到6,我认为i j和k都是整数,不像n是变量。我将如何处理这些问题:

e.g。问题4

内部循环 - 从0到(i-1)的迭代,它给出了迭代次数。

外部循环 - n总结

组合 - O(i * n)= O(n),因为i是整数。