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 时间复杂性与几何级数、嵌套循环_Loops_Time Complexity_Big O - Fatal编程技术网

Loops 时间复杂性与几何级数、嵌套循环

Loops 时间复杂性与几何级数、嵌套循环,loops,time-complexity,big-o,Loops,Time Complexity,Big O,我有以下代码,我试图了解它的时间复杂性: for (int i = 1 ; i <= n ; i = i*2) for (int j = 1 ; j <= n ; j = j*2) for (int k = 1 ; k <= j ; k++) 对于(inti=1;i理论上你是正确的复杂性是n*(log(n))^2 对于实际情况,让我们在n=1000时迭代: i = 1; n= 1000; j= 1;k =1; result = 0 while i<

我有以下代码,我试图了解它的时间复杂性:

for (int i = 1 ; i <= n ; i = i*2)
    for (int j = 1 ; j <= n ; j = j*2)
        for (int k = 1 ; k <= j ; k++)

对于(inti=1;i理论上你是正确的复杂性是
n*(log(n))^2

对于实际情况,让我们在n=1000时迭代:

i = 1; n= 1000; j= 1;k =1; result = 0
while i<=n:
    j=1
    while j<=n:
        k=1
        while k<=j:
            result = result+1
            k = k+1
        j = j*2
    i = i*2
print(result)
i=1;n=1000;j=1;k=1;结果=0

而我最喜欢的。只有一个因素
log(n)
在正确的答案中-你能看到为什么吗?是因为我在计算第三个循环的几何级数时使用了第二个循环吗?n=logn,q=2,a=1..不确定n=logn,q=2,a=1是什么,但是是的,第三个循环的运行次数以几何方式增加–1,2,4,8,16,…,n–其和以2n为界几何级数的m为a1*(q^n-1)/q-1.这里q=2和n=logn..所以总的来说它是n-1..但是我不需要用logn乘以它两倍吗?不,对于外环只有一次,因为它独立于其他两个。几何级数是由内环和中环的耦合产生的,而不仅仅是内环本身。检查你的解n=2^25://@MortezaJalambadani加上2^25,你能更清楚地说明你指的是哪种情况吗?谢谢你提出这个问题。
(floor(logn)+1
floor(logn)
之间有什么区别?让x=floor(logn)+1,那么公式就是x*((2^x)-1).所以减法是从二次幂的结果中得出的。我正在用更多的大括号进行编辑,以澄清计算中的优先顺序。