所以我一直试图找出下面显示的代码的时间复杂度。我知道第一个for循环迭代n次,必须乘以第二个for循环的迭代才能找到大哦时间复杂度。然而,第二个for循环内部的条件让我困惑。
public static void main(String[] args) {
int x = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j = j * 2) {
x = x + 1;
}
}
}
如果每次迭代都将j
乘以2倍,那么两个循环的时间复杂度都将是O(nlog(n))
。但是由于j
基于i
的值停止,我假设必须涉及求和规则。我对总体时间复杂度的最佳猜测是O(nlog^2(n)
?我是对还是错?为什么?
O(原木)
我希望以下假设得到证实。以下嵌套for循环的时间复杂度相同: 我的假设是,时间复杂度是相同的,因为5 x 1_000_000调用doSomething与1_000_000 x 5调用doSomething是相同的。是这样吗?如果是,如果涉及到流,这也是真的吗? 上述两种说法的时间复杂度相同吗?
对于下面的循环, 时间复杂度是多少,我应该怎么想?我的猜测是外环总共运行。内环运行次。因此,时间复杂度应该是。 我说得对吗? 提前感谢。
这段代码的时间复杂度是多少?外循环运行n次,但我不确定内循环。如果内环对于i的每个值一直运行到n,它能是O(n^2)吗?
我很难理解算法分析,尤其是下面的例子: 所以我的理解是,外循环是,当我乘以一个常量时,我不确定是否有任何区别。 不过,最让我困惑的是内部循环。我认为它是,因为j被常数递减,但我不确定和
我的困惑是- 如果我把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值一样,内部循环的运行次数也会减少 有人能给我解释一下吗?