c++ - 函数复杂度分析

标签 c++ complexity-theory

我怎样才能得到这个函数的成本?我知道它是 O(√n),但除了尝试很多 n 个值并获得一个模式之外,我不知道如何找到它。

void foo(int n) {
    int x = 2;
    int y = 1;
    while(y <= n) {
        y += x;
        ++x;
    }
}

最佳答案

sum(1,2,3,4,...,t) 的结果是什么?它等于:

sum(1,2,3,4,...,t)=(t*(t+1))/2

所以循环中的x增加了O(t^2)。所以while循环的次数会被分摊到O(sqrt(n)),因为y增加了x 直到到达 n

关于c++ - 函数复杂度分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53152016/

相关文章:

c++ - MSVS C++ 2012 : how to disable compiling-while-editting

c++ - 如何使用 PKEY_Device_FriendlyName 修复链接器错误

c++ - 'if' 、 'while' 、 'catch' 等之后的空间。使用 clang 格式

algorithm - 如何在常数时间内仅使用算术运算来计算指数?

performance - 任何算法的时间复杂度是否有可能随着输入大小的增加而降低,例如

algorithm - 对具有 O(n*Log(K)) 复杂度的近排序数组进行排序

java - 时间复杂度修正冒泡排序

c++ - C++ 的任何命令行解析库是否允许带有 N 个参数的选项

机会游戏的算法

c++ - 为什么用户定义的字符串文字和整数文字有不同的行为?