Time complexity 以下问题的时间复杂度是多少?有人能解释吗?

Time complexity 以下问题的时间复杂度是多少?有人能解释吗?,time-complexity,Time Complexity,找出以下算法的时间复杂度 for( i = 1 ; i <= n ; i = i*2) for( j = 1 ; j <= i ; j++) print(“Hello”) for(i=1;i的总运行时间实际上是O(n)。如果计算执行print语句的总时间,您将得到如下结果 1+2+4+8+16+[…],最后一个元素是2^k,其中k=int(log(n))。这是一个2^(k+1)-1的有限几何级数。现在,为了进行大O计算,尾随的-1是无关的,因此我们

找出以下算法的时间复杂度

for( i = 1 ; i <= n ; i = i*2)

     for( j = 1 ; j <= i ; j++)

          print(“Hello”)

for(i=1;i的总运行时间实际上是
O(n)
。如果计算执行print语句的总时间,您将得到如下结果
1+2+4+8+16+[…]
,最后一个元素是
2^k
,其中
k=int(log(n))
。这是一个
2^(k+1)-1
的有限几何级数。现在,为了进行大O计算,尾随的-1是无关的,因此我们剩下
2^(k+1)
,它可以用
2来限定^(log(n)+1)=2*2^log(n)=2n,即
O(n)

我运行了一些计时测试来确认这一点:

n=1000: 0.0003411999996387749 sec
n=10000: 0.002242799999748968 sec
n=100000: 0.01614079999990281 sec
n=1000000: 0.1618631999999706 sec
n=10000000: 2.070383299999775 sec