Performance 循环能否影响其他循环';不在其中的复杂性?
一个循环能影响其他循环而不在其内部吗 代码的总时间复杂度会改变吗 我在互联网上找到了这段代码,作为我所说的示例:Performance 循环能否影响其他循环';不在其中的复杂性?,performance,time,time-complexity,Performance,Time,Time Complexity,一个循环能影响其他循环而不在其内部吗 代码的总时间复杂度会改变吗 我在互联网上找到了这段代码,作为我所说的示例: int i, j, k, val=0, c=0; for (int i=n; i>1; i=i/2) val++; for (j=1; k<val; j=j*2) c++; inti,j,k,val=0,c=0; 对于(int i=n;i>1;i=i/2) val++; 对于(j=1;k是的,它可以,在您的示例中,它可以。第一个循环计算一些值,用于确定第
int i, j, k, val=0, c=0;
for (int i=n; i>1; i=i/2)
val++;
for (j=1; k<val; j=j*2)
c++;
inti,j,k,val=0,c=0;
对于(int i=n;i>1;i=i/2)
val++;
对于(j=1;k是的,它可以,在您的示例中,它可以。第一个循环计算一些值,用于确定第二个循环将执行的迭代次数。迭代次数与复杂性密切相关
目前,第一个循环进行~log(n)次迭代,第二个循环进行~log(log(n))次迭代。如果第一个循环更改为进行~n次迭代,第二个循环将进行~log(n)。如果第一个循环更改为计算val,使其达到~2^n,第二个循环将进行~n次迭代
作为循环的另一个代码没有什么特别之处:循环之前的任何代码都会影响循环的复杂性。n^2意味着外部循环迭代所有元素,并且在每次迭代中,它循环所有元素,因此操作将执行n*n次。当您将每次迭代的迭代次数减半时,复杂性会降低将是某种日志函数。因此,由于您有两个连续的循环,复杂性约为2*log(n)。如果有任何错误,请更正:)