Data structures 循环的时间复杂度

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

对于给定的代码,大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_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