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 有趣的嵌套循环的大Oh-如何计数?_Loops_Big O_Nested Loops - Fatal编程技术网

Loops 有趣的嵌套循环的大Oh-如何计数?

Loops 有趣的嵌套循环的大Oh-如何计数?,loops,big-o,nested-loops,Loops,Big O,Nested Loops,我知道关于Big-Oh符号有很多类似的问题,但这个例子非常有趣,也不平凡: int sum = 0; for (int i = 1; i <= N; i = i*2) for (int j = 0; j < i; j++) sum++; int和=0; 对于(int i=1;i内部循环迭代上一次运行前的最大时间N。它迭代N/2。如果将其加起来N+N/2+N/4+N/8,则加起来等于2*N。这就是所有运行的计数。T(N)=N太好了,这就是我所期望的。但是为什么

我知道关于Big-Oh符号有很多类似的问题,但这个例子非常有趣,也不平凡:

int sum = 0;
for (int i = 1; i <= N; i = i*2)
    for (int j = 0; j < i; j++)
        sum++;
int和=0;

对于(int i=1;i内部循环迭代上一次运行前的最大时间N。它迭代N/2。如果将其加起来N+N/2+N/4+N/8,则加起来等于2*N。这就是所有运行的计数。T(N)=N

太好了,这就是我所期望的。但是为什么在这个特殊的时刻我们不应该把它算作外循环*内循环?实际上我们算作外循环。这就是为什么我们把不同的运行时相加。不应该算作1+2+4+8+16+…+N???开始时I=1,后来2,4,8…t(N)=2^N??看起来我应该使用几何级数的和:对不起!我的错误!N不是应该求和的元素数。它是最后一个数-加起来是~2N。你从一开始就对了!