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
Loops 用乘法增量从循环中提取上界_Loops_For Loop_Big O - Fatal编程技术网

Loops 用乘法增量从循环中提取上界

Loops 用乘法增量从循环中提取上界,loops,for-loop,big-o,Loops,For Loop,Big O,我知道如何使用求和从使用求和的线性for循环中提取时间复杂度(和大O),但是如何将它用于乘法增量循环以获得O(logn)。例如,下面的代码是O(nlogn),但我不知道为什么 for (i = 0; i < n; i++) for (j = 1; j < n; j*7) /*some O(1) operations*/ (i=0;i

我知道如何使用求和从使用求和的线性for循环中提取时间复杂度(和大O),但是如何将它用于乘法增量循环以获得O(logn)。例如,下面的代码是O(nlogn),但我不知道为什么

for (i = 0; i < n; i++)
 for (j = 1; j < n; j*7)
    /*some O(1) operations*/
(i=0;i 对于(j=1;j
还有,为什么while循环O(logn)和do while循环O(n^2)。

在执行
j=j*7
的每个内部循环迭代时(我假设这就是您的意思)

也就是说,在每次迭代
j=7j

n
迭代之后,
j=j*7*7*7*…*7*7=j*(7^n)

n
成为我们想要达到的数字,
m
为迭代次数,因此:

n = j*7*7*7*...7 = j*(7 ^ m)
让我们从两边各拿一根圆木:

log(n) = log(j * (7 ^ m)) ~= m*log(7) = O(m)
因此,正如我们所看到的,内部循环运行
O(log(n))