【发布时间】:2019-06-16 18:42:44
【问题描述】:
对于给定的代码,Big-O 表示法的时间复杂度是多少?
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j = j + i)
some_constant_statement
如果我没记错的话
First loop take n times
Second loop n.long(n) time
For Second loop :
n + n/2 + n/3 + n/4 +...................n/n times
n(1 + 1/2 + 1/3 + ..............1/n) times means
n(long(n)) time
So, time complexity of entire piece of code is n.n.long(n)
如果我错了,请纠正我。
【问题讨论】:
-
H.Das,您的推理是正确的,只是您不必计算第一个循环,因为您在计算第二个循环的操作数时已经考虑到了它。它是 O(nlogn)
-
感谢您的指正!!所以时间复杂度是n.log(n)
-
链接的副本不是副本,因为内部循环的增量是
1,而不是i。
标签: data-structures time-complexity big-o