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

标签 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)?

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

最佳答案

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

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

关于algorithm - 如何使用求和符号证明算法是 Θ (log n)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42193633/

相关文章:

java - 以非显而易见的方式递增字符串的算法

寻找最佳组合的算法

c 生成函数并调用它

c - 重构遗留 C 代码——使用外部声明来帮助拆分模块(潜在的链接和运行时问题)

algorithm - 具有两个参数的函数的时间复杂度是多少?

java - 将文件的字节数组加载到内存中

big-o - O(O(f(n))) 是什么意思?

algorithm - 二次函数的渐近紧界

algorithm - 获取第 k 组未排序的结果列表,每组具有任意数量的结果

python - 如何有效地从连续的字符串中提取文字?