我是分析时间的新手complexity.some有人能帮我解决下面算法的时间复杂度吗?
public void test(int n)
{
int i=1;
while(i<n)
{
int j=0;
while (j<n)
{
j=j+(2*i);
}
i=i*2;
}
}
外部循环将运行日志(n)次。内部循环将运行多少次。我们如何用“n”来计算内环的频率,因为它取决于变量“i”。
有人能帮忙找出上面代码的时间复杂度吗。
外循环将运行log(n)
次。
说n=32
。因此,内部循环将运行:
n/2
对于i=1
所以这个几何级数的和是
即
n/2 n/4 ..... 1
因此,上述算法的时间复杂度是
logn + 2n
这是
O(n)
。
我有一个嵌套的for循环: 如何找到这个循环的时间复杂度。 我在考虑外部循环,它从0运行到n^2(独占),所以它运行n^2 1次。 对于内部循环,它取决于i,这就是我迷失的地方。有什么指示吗?
这是一个正常的嵌套循环,具有复杂性 我很难理解为什么下一个循环也有复杂性,即使它打印的语句更少 有什么想法吗?
今天,我和我的同事就一个特定的代码片段发生了一个小争论。代码看起来像这样。至少,这是他想象的那样。 他希望我删除第二个循环,因为这会导致性能问题。 然而,我确信,因为我在这里没有任何嵌套循环,所以无论我放了多少个顺序循环(我们只有2个),复杂度总是O(n)。 他的论点是,如果< code>n是1,000,000,并且循环需要5秒,那么我的代码将需要10秒,因为它有2个for循环。这个说法之后我就糊
我很难理解算法分析,尤其是下面的例子: 所以我的理解是,外循环是,当我乘以一个常量时,我不确定是否有任何区别。 不过,最让我困惑的是内部循环。我认为它是,因为j被常数递减,但我不确定和
这个问题是为了修改过去的试卷,如果我走上了正确的道路,我需要一些建议。 求出下面一段代码的时间复杂度,表示给定整数n的操作次数: 所以我认为外循环是,第一个内环是,第二个内环是。我只是想知道我是否有一个大致的想法,以及如何从这里继续前进。