Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
Algorithm 具有连接变量的两个for循环的时间复杂度计算_Algorithm_For Loop_Time Complexity - Fatal编程技术网

Algorithm 具有连接变量的两个for循环的时间复杂度计算

Algorithm 具有连接变量的两个for循环的时间复杂度计算,algorithm,for-loop,time-complexity,Algorithm,For Loop,Time Complexity,这将是什么样的时间共变性: for(k=1;K<=n;k*=2) for(j=1;j<=k;j++) sum++ for(k=1;k当k为1时(sum++)运行1次 当k为2时(sum++)运行2次 当k为4时(sum++)运行4次 当k为n=2时,k(sum++)运行2^k次 所以我们必须计算一下 1+2+4+…+2^k=2^0+2^1+2^2+…+2^k=(1-2^(k+1))/(1-2) 因为我们把n=2^k,所以: k=对数(n) 2^(log(n))=n^

这将是什么样的时间共变性:

for(k=1;K<=n;k*=2)
   for(j=1;j<=k;j++)
     sum++
for(k=1;k当k为1时(sum++)运行1次

当k为2时(sum++)运行2次

当k为4时(sum++)运行4次

当k为n=2时,k(sum++)运行2^k次

所以我们必须计算一下

1+2+4+…+2^k=2^0+2^1+2^2+…+2^k=(1-2^(k+1))/(1-2)

因为我们把n=2^k,所以:

k=对数(n)

2^(log(n))=n^(log(2))

当k为1时,2*2^k-1=2*n-1

运行1次(sum++)

当k为2时(sum++)运行2次

当k为4时(sum++)运行4次

当k为n=2时,k(sum++)运行2^k次

所以我们必须计算一下

1+2+4+…+2^k=2^0+2^1+2^2+…+2^k=(1-2^(k+1))/(1-2)

因为我们把n=2^k,所以:

k=对数(n)

2^(log(n))=n^(log(2))

当k为1时,2*2^k-1=2*n-1

运行1次(sum++)

当k为2时(sum++)运行2次

当k为4时(sum++)运行4次

当k为n=2时,k(sum++)运行2^k次

所以我们必须计算一下

1+2+4+…+2^k=2^0+2^1+2^2+…+2^k=(1-2^(k+1))/(1-2)

因为我们把n=2^k,所以:

k=对数(n)

2^(log(n))=n^(log(2))

当k为1时,2*2^k-1=2*n-1

运行1次(sum++)

当k为2时(sum++)运行2次

当k为4时(sum++)运行4次

当k为n=2时,k(sum++)运行2^k次

所以我们必须计算一下

1+2+4+…+2^k=2^0+2^1+2^2+…+2^k=(1-2^(k+1))/(1-2)

因为我们把n=2^k,所以:

k=对数(n)

2^(log(n))=n^(log(2))


2*2^k-1=2*n-1

最容易解释这个问题的方法是忘记外循环存在,然后首先查看内循环的复杂性。假设内循环运行“M”次……那么“sum++”操作的总数将为

1+2+4+…+2^(M-1)

注意到这是一个由所有1组成的二进制数,可以将这个和减少到'2^(M)-1'。现在的问题是M是什么?你已经弄明白了,M=log(n)+1(+1是因为循环必须至少运行一次)。将其插入到内部循环的复杂性中会给我们带来

2^(对数(n)+1)-1=2*n-1


因此,整个循环的规模为O(2n-1)。希望这有帮助!

这个问题最容易解释,因为忘记了外循环在那里,然后首先查看内循环的复杂性。假设内循环运行“M”次……那么“sum++”操作的总数将为

1+2+4+…+2^(M-1)

注意到这是一个由所有1组成的二进制数,可以将这个和减少到'2^(M)-1'。现在的问题是M是什么?你已经弄明白了,M=log(n)+1(+1是因为循环必须至少运行一次)。将其插入到内部循环的复杂性中会给我们带来

2^(对数(n)+1)-1=2*n-1


因此,整个循环的规模为O(2n-1)。希望这有帮助!

这个问题最容易解释,因为忘记了外循环在那里,然后首先查看内循环的复杂性。假设内循环运行“M”次……那么“sum++”操作的总数将为

1+2+4+…+2^(M-1)

注意到这是一个由所有1组成的二进制数,可以将这个和减少到'2^(M)-1'。现在的问题是M是什么?你已经弄明白了,M=log(n)+1(+1是因为循环必须至少运行一次)。将其插入到内部循环的复杂性中会给我们带来

2^(对数(n)+1)-1=2*n-1


因此,整个循环的规模为O(2n-1)。希望这有帮助!

这个问题最容易解释,因为忘记了外循环在那里,然后首先查看内循环的复杂性。假设内循环运行“M”次……那么“sum++”操作的总数将为

1+2+4+…+2^(M-1)

注意到这是一个由所有1组成的二进制数,可以将这个和减少到'2^(M)-1'。现在的问题是M是什么?你已经弄明白了,M=log(n)+1(+1是因为循环必须至少运行一次)。将其插入到内部循环的复杂性中会给我们带来

2^(对数(n)+1)-1=2*n-1


因此,整个循环的刻度为O(2n-1)。希望这有帮助!

随机注释-我会小心任何将运行时间列为
O(2n-1)
的材料,而不是紧跟其后
=O(n)
。随机注释-我会小心任何将运行时间列为
O(2n-1)的材料
不紧跟其后是
=O(n)
。随机注释-我会小心任何将运行时间列为
O(2n-1)
的材料,不紧跟其后是
=O(n)
。随机注释-我会小心任何将运行时间列为
O(2n-1)的材料
不紧跟其后是
=O(n)
。通过您的语句M=Log(n)+1。您是否引用外部循环?是的,外部循环将运行Log(n)+1次。通过您的语句M=Log(n)+1。您是否引用外部循环?是的,外部循环将运行Log(n)+1次。通过您的语句M=Log(n)+1.您是否引用外部循环?是的,外部循环将运行Log(n)+1次。通过您的语句M=Log(n)+1。您是否引用外部循环?是的,外部循环将运行Log(n)+1次。