时间复杂度(嵌套循环)

Time complexity(nested loops)

这个的时间复杂度怎么算的?

int count=0;

for (int i=1 ; i < n; i*=4)

     for (int j=1;j<=n;j++)

              count++;

tl;dr:发布代码的复杂度为:O(nlogn)

让我们从里到外分析一下。对于 i.

的每个值,内部循环恰好重复自身 n

外循环在 i < n 时重复自身,并且每次 i 乘以 4。这意味着,在第一次迭代之后,i=1,然后是 i=4, i=16, i=64, ....,在 k'th 迭代之后 i = 4^(k-1)
这意味着,您在以下时间停止:

i >= n
4^(k-1) >= n
log_4(4^(k-1)) >= log_4(n)
k-1 >= log_4(n).

这意味着外循环将重复log_4(n) + 1

将它们加在一起得到 n*(log_4(n)+1) 次内循环重复,即 O(nlogn)