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

标签 c big-o time-complexity

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

    while (j > 1)
        --j;
}

最佳答案

O(n):
外循环在每次迭代中运行logn次:i=1,2,4,8,...n/4(入口值)
内循环运行2*i次(入口值)
所以总的来说,你得到:2+4+8+...+n/2 = n-2 = O(n)

关于c - 这段代码的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6199728/

相关文章:

c中两个数组的公共(public)数字函数

c - 当遇到 EOF 字符时,使用 getchar() 从控制台读取字符直到遇到 EOF 字符的循环不会退出

algorithm - 你能通过查看图表来检查大 O 符号吗?

big-o - 当 x 趋于无穷时,哪个 f(x) 最小化 g(f(x)) 的阶数

c++ - 如何降低以下代码块的时间复杂度?

c - 没有 return 语句的 printf 返回值

c - Arrays如何在 "for"循环中工作(C语言)

algorithm - 这个 for 循环语句的运行时间?

arrays - 使用二维数组寻找孤立的城市

algorithm - 我找到了一种在 O(E/V) 中计算多个 MST 的算法。这个可以发表吗?