如何使用求和符号证明算法是Θ(log n)?

时间:2017-02-12 21:45:33

标签: algorithm runtime asymptotic-complexity

假设我有以下代码:

int sum = 0;
int val=128;
for (int i=n; i>=1; i=i/2) {
    for (int j=1; j<val; j++) {
    sum ++;
    }
}

你如何用数学方法证明这是Θ(log n)?

我通常的方法是使用求和(sigma表示法),但在这种情况下,我们不会线性增加循环变量。对此有什么好处?

1 个答案:

答案 0 :(得分:1)

i的值为n, n/2, n/4, ..., 1。由于它是整数,因此该条件的最终值为1。假设n2^k,则迭代次数为k,即log n。因此情况不会改变,它是具有一定迭代次数的另一个for

内部循环可以被视为单个语句,因为val是常量。