Data structures 循环的时间复杂度
对于给定的代码,大O表示法的时间复杂度是多少Data structures 循环的时间复杂度,data-structures,time-complexity,big-o,Data Structures,Time Complexity,Big O,对于给定的代码,大O表示法的时间复杂度是多少 for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j = j + i) some_constant_statement 如果我错了,请纠正我。简短回答:时间复杂度为O(n logn) 内部循环每次需要n个步骤。事实上: for(int j = 1; j <= n; j = j + i) some_constant_stateme
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j = j + i)
some_constant_statement
如果我错了,请纠正我。简短回答:时间复杂度为O(n logn) 内部循环每次需要n个步骤。事实上:
for(int j = 1; j <= n; j = j + i)
some_constant_statement
总数是总数。我们可以用这个近似。因此,我们知道:
n n
--- ---
\ 1 \ 1
/ --- ≤ ln n ≤ / ---
--- i+1 --- i
i=1 i=1
这意味着我们可以说,操作总数的时间复杂度为O(n×ln)。由于loga(b)=loga/logb,我们可以将其表示为O(n logn)H.Das,您的推理是正确的,只是您不必计算第一个循环,因为您在计算第二个循环的操作数时已经考虑了它。这是O(nlogn)谢谢你纠正我!!因此时间复杂度为n.log(n)。链接的副本不是副本,因为内部循环的增量在那里
1
,而不是i
。
n
---
\ 1
n / ---
--- i
i=1
n n
--- ---
\ 1 \ 1
/ --- ≤ ln n ≤ / ---
--- i+1 --- i
i=1 i=1