i=1; while(i<=n) i=i*3; 谁能告诉我这个的时间复杂度是多少?怎么得来的?

如题所述

i是这样变化的:1, 3, 9, 27, ...

如果用i(x)表示第x次循环时i的值,则 i(x) = 3^x , x初始值为0。

循环在 i <= n 的时候停止,即 i(x) = 3 ^ x <= n;

=> x<= log3(n)
即循环结束时,最多进行了log3(n)次运算。

按照大O表示法定义,它的复杂度为 O(log3(n)), 即 O(lgn/lg3)
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答