循环的时间复杂度分析:

时间:2015-05-30 15:13:52

标签: amortized-analysis

为什么时间复杂度为O(n)而不是O(nlogn)?难道你不必将外循环的复杂性与内循环的复杂性相乘吗?

    int fun(int n){
    int count = 0;
    for (int i = n; i > 0; i /= 2)
        for (int j = 0; j < i; j++)
            count += 1;
    return count;
    }

1 个答案:

答案 0 :(得分:1)

在循环的第一次迭代中,内循环覆盖n的一半。下一次迭代涵盖四分之一,然后是八分之一,依此类推。您可以通过以下函数表示系数。正如你所看到的那样,它是一个总和为1的无限系列。因此整个函数是O(n)

Infinite geometric series of 1 over 2 to the n