C 这段代码的时间复杂度是多少?

C 这段代码的时间复杂度是多少?,c,big-o,time-complexity,C,Big O,Time Complexity,关于: 外循环在每次迭代中运行logn次:i=1,2,4,8,…n/4个入口值 内部循环运行2*i乘以入口值 总的来说,你会得到:2+4+8+…+n/2=n-2=On第一次迭代时,内部循环执行两次,然后四次,然后八次,以此类推 因此,您需要找出总和的终止点: int i = 1; while (i < n/2) { i = i * 2; int j = i; while (j > 1) --j; } 然后计算出如何评估它的线索:几何级数。嗯

关于: 外循环在每次迭代中运行logn次:i=1,2,4,8,…n/4个入口值 内部循环运行2*i乘以入口值
总的来说,你会得到:2+4+8+…+n/2=n-2=On

第一次迭代时,内部循环执行两次,然后四次,然后八次,以此类推

因此,您需要找出总和的终止点:

int i = 1;
while (i < n/2)
{
    i = i * 2;
    int j = i;

    while (j > 1)
        --j;
}

然后计算出如何评估它的线索:几何级数。

嗯,WTF?整个过程可以是i上的一个表达式。因为函数在这里声明,它不会运行,因为n没有声明,所以不会太长!这不是一个家庭作业网站。至少告诉我们你在这方面遇到了什么困难。书中提到的n是一个巨大的数字!如果不是HW,为什么要投否决票?它没有编译,因为这是一个理论问题。我认为假设n是2的幂,这是正确的。如果n m^2,那么它就多一点messy@Jon:实际上没有混乱,在任何情况下,当i=n/4进入最后一次迭代时,算法将完成迭代,而不是如我之前所写的n/2。。。编辑。而且还在继续
2 + 4 + 8 + ...