我是分析时间复杂性的新手。有人能帮我解决以下算法的时间复杂度吗?
public void test(int n)
{
int i=1;
while(i<n)
{
int j=1;
while (j<i)
{
j=j*2;
}
i=i*2;
}
}
外部循环将运行日志(n)次。内部循环将运行多少次。我们如何用“n”来计算内环的频率,因为这里它取决于变量“i”,并将运行log(i)次。
有人能帮忙找出上面代码的时间复杂度吗。
外部循环将运行(对数n)次。
由于内部循环是由i绑定的,所以它将为log1 log2 log3运行。。。不同i值的对数(n-1)次。解决上述问题可推断为
=对数(1*2*3…(n-l)。(因为loga*logb=loga*b)
=对数((n-1)!)。(这是(n-1)阶乘)
=(n-1)log(n-1).(
所以内环的复杂性为O(nlogn)。
因此上述算法的时间复杂度为
洛恩洛恩
即O(nlogn)。
给定函数的时间复杂度为O(log n log n)=O(log^2 n)
。
外环具有时间复杂度O(log n)。同样,内环也具有时间复杂度O(log n)
,因为i
的值以n
为界。因此log i=O(log n)
。
我是分析时间的新手complexity.some有人能帮我解决下面算法的时间复杂度吗? 外部循环将运行日志(n)次。内部循环将运行多少次。我们如何用“n”来计算内环的频率,因为它取决于变量“i”。 有人能帮忙找出上面代码的时间复杂度吗。
我有一个嵌套的for循环: 如何找到这个循环的时间复杂度。 我在考虑外部循环,它从0运行到n^2(独占),所以它运行n^2 1次。 对于内部循环,它取决于i,这就是我迷失的地方。有什么指示吗?
所以我想我知道的是: 第1行只是1。 第一个时循环是N 1。 i--;是N次,因为它在第一个while循环中。 j=i-1;也是N. 第二个时循环是(N 1)N=N^2 N,因为它是时循环中的时循环 if语句:??? j--;是N(N)=N^2 返回0;是1 我对计算算法的时间复杂度非常陌生,所以我甚至不确定我认为我知道的是否完全正确。但是让我困惑的是if语句,我不知道如何计算它(如果它之后还有一
对于以下伪代码,我想先计算出作为输入大小函数的操作数,然后再将其放入大O表示法中: 到目前为止,我认为对于外循环的每个迭代,,内循环等于操作。顺从的 简化为O(n^2)。 但是我不确定我是否在正确的轨道上,因为我没有看到任何像这样的问题,即外循环的索引被用于内循环。
这是一个正常的嵌套循环,具有复杂性 我很难理解为什么下一个循环也有复杂性,即使它打印的语句更少 有什么想法吗?
我很难理解算法分析,尤其是下面的例子: 所以我的理解是,外循环是,当我乘以一个常量时,我不确定是否有任何区别。 不过,最让我困惑的是内部循环。我认为它是,因为j被常数递减,但我不确定和