【发布时间】:2019-04-06 13:50:34
【问题描述】:
谁能告诉我以下嵌套循环的时间复杂度是多少:
for(i=1;i<n;i+=i)
{
for(j=1;j<n;j*=j)
//O(1)
}
据我所知,这将是 O(log(n)*log(log(n)) 由于外部循环将运行 log(n) 次,因为我们每次迭代都有效地将 i 乘以 2。 在内部循环中,我们在每次迭代中对循环计数器 j 进行平方。 所以最终的复杂度是这两者的乘积。 这是正确的还是有其他答案。 在此先感谢:D
【问题讨论】:
-
for(j=1;j<n;j*=j)- 这应该是 O(infinity) 因为j永远不会增加(1 乘以 1 仍然是 1)。也许你的意思是例如j=2作为初始条件? (如果这是一道作业题,那很可能是一道技巧题。)
标签: loops for-loop nested time-complexity big-o