请考虑以下算法-
for( j = 1; j < n ; j = j * 3)
{
for( k = 1 ; k <= n ; k = k + 2 )
{
r = i + j + k ;
System.out.println(r);
}
}
时间和空间的复杂性是如何被发现的?
外部循环将有log3n次迭代,内部循环将有n/2次迭代(2是常数,可以忽略),因此时间复杂度为O(n log n)
。
空间复杂度为O(1),因为这里没有针对N创建数组/列表。
我很难理解算法分析,尤其是下面的例子: 所以我的理解是,外循环是,当我乘以一个常量时,我不确定是否有任何区别。 不过,最让我困惑的是内部循环。我认为它是,因为j被常数递减,但我不确定和
这段代码的时间复杂度是多少?外循环运行n次,但我不确定内循环。如果内环对于i的每个值一直运行到n,它能是O(n^2)吗?
我的困惑是- 如果我把n+(n^2-1)*O(1)写成n+O(1)+O(1)+........+O(1),那么我可以忽略低阶项,复杂性将是O(n),但是另一个推理可以是一个常数的工作量正在做n^2次,所以时间复杂性应该是O(n^2) 在这个问题中也发生了类似的事情-带有if语句的嵌套循环的时间复杂度O(N):O(N^4)?
以下示例循环的时间复杂度为O(n^2),有人能解释为什么是O(n^2)吗?因为这取决于c的价值。。。 循环1--- 回路2--- 如果c=0;然后它运行无限次,就像增加c值一样,内部循环的运行次数也会减少 有人能给我解释一下吗?
对于下面的循环, 时间复杂度是多少,我应该怎么想?我的猜测是外环总共运行。内环运行次。因此,时间复杂度应该是。 我说得对吗? 提前感谢。
如果我通过两个嵌套的For循环进行输入 外环的复杂度是O(X),但是我对内环的时间复杂度感到困惑,因为Y是可变的。