Algorithm 外循环执行对数(n)次的双while循环算法的渐近增长率
此算法的渐进增长率是多少(取决于Algorithm 外循环执行对数(n)次的双while循环算法的渐近增长率,algorithm,asymptotic-complexity,Algorithm,Asymptotic Complexity,此算法的渐进增长率是多少(取决于n) i = 1; // executed 1 time while( i ≤ n) { j = 1; // executed log(n) times while( j ≤ i) { j = j + 1; // ? } i = 2*i; // executed log(n) times } 当n等于10时: | i iterations | j itérations | i=1 | j=1 |
n
)
i = 1; // executed 1 time
while( i ≤ n) {
j = 1; // executed log(n) times
while( j ≤ i) {
j = j + 1; // ?
}
i = 2*i; // executed log(n) times
}
当n等于10时:
| i iterations | j itérations
| i=1 | j=1
| i=2 | j=1 j=2
| i=4 | j=1 j=2 j=3 j=4
| i=8 | j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8
外部循环(i)影响执行log(n)
次
内环(j)矫揉造作执行了多少次?这应该是O(n)
外循环的最后一次迭代具有内循环的n
次迭代。外循环的第二个到最后一个迭代具有内循环的n/2
迭代。从第三次迭代到最后一次迭代有n/4
:
n + n/2 + n/4 + ... = 2*n
有关允许您计算总和的公式,请参阅。当n为4时,外循环的最后一次执行将导致内循环执行4次。当您将n从4加倍到8时,外部循环将再次执行一次,在最后一次执行外部循环时,内部循环将执行8次。再次将其加倍到16,外部循环将再次执行,内部循环执行16次。因此,将输入加倍会导致执行时间加倍(再加上一个外循环的时间,随着n变大,这个时间变得不重要)
所以O(n)。你那边有没有试过?如果你不知道,你可以简单地测量它