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次。