复杂度计算

例题

1.下列程序段的时间复杂度为()

int i = 0, s = 0;
while (s < n) {
    s += i;
    i++;
}

[√]O(n^(1/2))
[]O(n^(1/3))
[]O(n)
[]O(n^2)

来源:牛客网,链接:
链接:https://www.nowcoder.com/questionTerminal/6b53fbef676843b2b53d9d0f18f4e7ea
来源:牛客网

显然n表示规模,s=s+i和i++是基本操作
i与s都是从0开始,假设循环执行了m次结束,则有
s1 = 1
s2 = 1+2 = 3
s3 = 1+2+3 = 6
...
s_m = 1+2+3+...+m = image
(等差数列求和)
由以上公式可以得到等式
((1+m)m)/2 + K = n(K为起修正作用的常数)
由求根公式解出 image

image

由此可知image

posted @ 2022-08-02 15:17  ethon-wang  阅读(82)  评论(0编辑  收藏  举报