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)。如果有任何错误,请更正:)