Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
3个嵌套日志循环的Java大O表示法(n)_Java_Loops_Complexity Theory_Big O_Nested Loops - Fatal编程技术网

3个嵌套日志循环的Java大O表示法(n)

3个嵌套日志循环的Java大O表示法(n),java,loops,complexity-theory,big-o,nested-loops,Java,Loops,Complexity Theory,Big O,Nested Loops,对于以下嵌套循环,大O表示法是什么 for (int i = n; i > 0; i = i / 2){ for (int j = n; j > 0; j = j / 2){ for (int k = n; k > 0; k = k / 2){ count++; } } } 我的想法是: 每个循环都是O(log2(n))所以它就像乘法一样简单吗 O(lo

对于以下嵌套循环,大O表示法是什么

     for (int i = n; i > 0; i = i / 2){
        for (int j = n; j > 0; j = j / 2){
           for (int k = n; k > 0; k = k / 2){
              count++;
           }
        }
     }
我的想法是: 每个循环都是
O(log2(n))
所以它就像乘法一样简单吗

O(log2(n)) * O(log2(n)) * O(log2(n))  =  O(log2(n)^3)
是的,没错

计算嵌套循环(其边界不会立即相互依赖)的大O复杂性的一种方法是从内到外工作。最里面的循环执行O(logn)工作。第二个循环运行O(logn)次,每次都运行O(logn),所以它运行O(log2n)。最后,最外层的循环运行O(logn)次,并且在每次迭代中都执行O(log2n)工作,因此完成的总工作是O(log3n)

希望这有帮助

是的,你是对的

简单的计算方法-

for(int i=0; i<n;i++){ // n times 
    for(int j=0; j<n;j++){ // n times
    }
}

在嵌套循环中,每个循环的Big-O都是
O(log(n))
,所以所有的复杂度都是
O(log(n)^3)
事实上,你的假设是正确的。您可以按如下方式有条不紊地显示它:


我的假设也是
O(log2(n)^3)
。正确的表示法是什么?O(log2(n)^3)或您的方式?还是两者都可以接受?我已经看到了这两种写法。我个人喜欢sin^2 x样式的log^3 n,尽管它与上下文中使用的任何约定一致。
log2 n
的符号可能会与
log n
混淆
for (int i = n; i > 0; i = i / 2){ // log(n)
     for (int j = n; j > 0; j = j / 2){ // log(n)
         for (int k = n; k > 0; k = k / 2){ // log(n)
           count++;
         }
     }
}