void fun(int n)
{
int i=0, s=0;
while(s<n)
{
i++;
s=s+i;;
}
}
该算法的时间复杂度是多少,如何计算的
O(logn) :
假设t次结束循环 s= (1+2+3+...+t)=(1+t)*t/2>=n
去掉常数项: t^2 >= n
t >= log(n)
时间复杂度 O(logn)
你确定 log(n) * log(n) >= n ?
感觉是O(n)的样子
一次循环
如果是有关二分法的就带有log,例如O(log2 n)
dfs(未经优化)一般是一个数的n次方,例如O(2^n),每一步两个分支
标准的循环,一般有几层循环就是n的几次方,O(n^2)之类的
复杂度是数量级别的,跟大小没关系
这是调和级数,复杂度 单log