Java 为什么是O(logm+;logn)而不是O(logm*logn)

Java 为什么是O(logm+;logn)而不是O(logm*logn),java,algorithm,complexity-theory,Java,Algorithm,Complexity Theory,我在堆栈溢出上看到了相同的问题3次: 我想问其中一个问题,但我不能,因为我是该网站的新手,不能发表评论 有人能给我解释一下为什么复杂性是O(logm+logn)而不是O(logm*logn)? 我试着自己解决它,而O(logm*logn)对我来说更有意义。。。例如,如果你用n=16和m=1000运行它,那么你会得到6+4。。。更有意义的是,它将运行6*4次 你能帮我澄清一下吗。。?谢谢:)嗯,while循环在O(logm)中运行,其中日志的基数为3,在while循环之后,外部for循环运行恒定

我在堆栈溢出上看到了相同的问题3次:

我想问其中一个问题,但我不能,因为我是该网站的新手,不能发表评论

有人能给我解释一下为什么复杂性是O(logm+logn)而不是O(logm*logn)? 我试着自己解决它,而O(logm*logn)对我来说更有意义。。。例如,如果你用n=16和m=1000运行它,那么你会得到6+4。。。更有意义的是,它将运行6*4次


你能帮我澄清一下吗。。?谢谢:)

嗯,while循环在O(logm)中运行,其中日志的基数为3,在while循环之后,外部for循环运行恒定次数
,而
for
循环是两个独立的循环<用于
的代码>不是内部循环。代码是这样的

while (i>100){
    i = i/3;
} //end of while

for (int k=i; k>=0; k--){
    for (int j=1; j<n; j*=2)
        System.out.print(k + "\t" + j);
    System.out.println();
} //end of for
while(i>100){
i=i/3;
}//时间结束
对于(int k=i;k>=0;k--){

for(int j=1;jt第一个链接的答案解释了这一点……突然出现了大量的大O问题。你在课堂上没有学到任何东西吗?@devnull我想我们真的需要一个FAQ类型的问题,我们几乎可以将VTC的任何内容作为副本。while循环在O(log m)中运行,for循环在O(log n)中运行,如果它不是嵌套的,你会增加复杂性-你不明白哪一部分?正如我在评论中说的,我想问这个问题,但我不能问,因为我是新来的,名声不好…对不起。至于你的问题devnull,你会惊讶于一些机构的教学方式…对!谢谢,我的不好。while循环是运行log_3(m)的循环时间和第一个for循环根据while循环的结果运行…抱歉,我没有注意到:)也谢谢:)您用更简单的方式解释了它way@unknown2u不客气