Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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
Time complexity 嵌套循环的T(n),我得到的答案是(logn+;1)(logn+;2),对吗? i=n; 而(i>=1){ j=i; 当(j_Time Complexity - Fatal编程技术网

Time complexity 嵌套循环的T(n),我得到的答案是(logn+;1)(logn+;2),对吗? i=n; 而(i>=1){ j=i; 当(j

Time complexity 嵌套循环的T(n),我得到的答案是(logn+;1)(logn+;2),对吗? i=n; 而(i>=1){ j=i; 当(j,time-complexity,Time Complexity,在while(i>=1){(…)}循环中时,i大于1(除了最后一次迭代),因此在j=i之后,j大于1(除了最后一次迭代) 因此,您的代码或多或少相当于: i=n; while(i>=1){ j=i; while(j<=n){ thetha(1) j=j*2; } i=i/2; } 整体复杂度是while循环的复杂度,它是log(n)。是的,你是正确的,外部循环是log(n),内部循环是log(n),这会产生(l

while(i>=1){(…)}
循环中时,
i
大于1(除了最后一次迭代),因此在
j=i
之后,
j
大于1(除了最后一次迭代)

因此,您的代码或多或少相当于:

i=n;
while(i>=1){
    j=i;  

    while(j<=n){ 
        thetha(1)
        j=j*2;
    }
    i=i/2;
}

整体复杂度是while循环的复杂度,它是log(n)。

是的,你是正确的,外部循环是log(n),内部循环是log(n),这会产生(logn)(logn)

Log(n)复杂性的原因是循环中剩余的迭代次数在每次迭代时减半。这是通过将迭代变量
i
除以2还是通过将变量
j
乘以2来实现的,这是不相关的。完成循环所需的时间随着每个循环的Log(n)的增加而增加

(logn)(logn)的乘法是由于外循环的每个迭代执行内循环的log(n)迭代

加法是不必要的,因为在大O表示法中,我们只关心一个函数相对于另一个函数的增长速度。用一个常数抵消它(或乘以一个常数)不会改变函数的相对复杂度,因此最终结果是(logn)(logn)。

对不起,这不是while(j)
i=n;
while(i>1){
    i=i/2;
}
if (i==1){
    j=i
    while(j<=1){ 
        thetha(1)
        j=j*2;
    }
}
i=n;
while(i>1){
    i=i/2;
}
if (i==1){
    thetha(1)
}