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