首页 新闻 会员 周边 捐助

关于算法时间复杂度的一些问题

0
悬赏园豆:10 [已解决问题] 解决于 2021-10-03 20:53

void fun(int n)

{

    int i=0, s=0;

    while(s<n)

    {

            i++;

            s=s+i;;

    }

}

该算法的时间复杂度是多少,如何计算的

新手小白。的主页 新手小白。 | 初学一级 | 园豆:75
提问于:2021-09-05 19:39
< >
分享
最佳答案
0

O(logn) :
假设t次结束循环 s= (1+2+3+...+t)=(1+t)*t/2>=n
去掉常数项: t^2 >= n
t >= log(n)
时间复杂度 O(logn)

收获园豆:10
尹瑞星 | 菜鸟二级 |园豆:367 | 2021-09-07 14:58

你确定 log(n) * log(n) >= n ?

Suzt_ilymtics | 园豆:206 (菜鸟二级) | 2022-02-17 08:27
其他回答(4)
0

感觉是O(n)的样子
一次循环

计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-09-05 20:57

如果是有关二分法的就带有log,例如O(log2 n)
dfs(未经优化)一般是一个数的n次方,例如O(2^n),每一步两个分支
标准的循环,一般有几层循环就是n的几次方,O(n^2)之类的

支持(0) 反对(0) 计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-09-05 20:59
0

复杂度是数量级别的,跟大小没关系

不知道风往哪儿吹 | 园豆:2037 (老鸟四级) | 2021-09-06 11:10
0
〆灬丶 | 园豆:2314 (老鸟四级) | 2021-09-07 09:35
0

这是调和级数,复杂度 单log

Suzt_ilymtics | 园豆:206 (菜鸟二级) | 2021-09-18 09:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册