Time Complexity of this double loop

前端 未结 1 1354
有刺的猬
有刺的猬 2021-01-26 19:23

What will be the time complexity of this code?

 for(int i = 1 ; i <= b ; ++i )
     for(int j = i ; j <= b ; j += i )
1条回答
  •  离开以前
    2021-01-26 20:16

    You can expand the loops to something like this:

    i = 1 ——>   1,2,3,…,b     b
    i = 2 ——>   1,3,5,…,b     (b/2)
    i = 3 ——>   1,4,7,…,b     (b/3)
    i = 4 ——>   1,5,9,…,b     (b/4)
      …
    i = b ——>   1, b          (b/b = 1)
    

    This expands into a sum of the form:

    b + b/2 + b/3 + … + b/b = b * (1 + 1/2 + 1/3 + … + 1/b)
    

    You might recognize the second factor as the Harmonic Series. Then, using the result from the following SO answer: Finding Big O of the Harmonic Series you can get the Big Oh of your nested loops:

    O(b * log(b))
    

    0 讨论(0)
提交回复
热议问题