我有一个算法考试..并且在循环时间复杂度方面有点不太好:我刚刚开始了解它的基础知识..
我有这个循环
i=2
while (i<n)
{
i=i*i
x=x+1
}
我认为解决方案必须如下:
(i)将从2到2 k ,其中k = 2 i
每次执行语句1次..
so 1 + 1 + 1 + ..,这意味着1 * 2 k
从此我无法继续......
第二个问题的家伙..请推荐一个网站或某事我可以练习更多这些..搜索但没找到:s
答案 0 :(得分:2)
只要i
小于n
,循环就会运行。换句话说,你需要找到k
使得2 2 k &lt; ñ。 ==&GT; k = log 2 log 2 n。因此循环迭代log 2 log 2 n次,并且在每次迭代时它执行2次操作(乘法和加法) - 这些操作需要O(1)
次。
==&GT;执行循环的时间等于log 2 log 2 n * O(1)==&gt;总复杂度为O(loglogn)
。