0

I am not able to understand time complexity of this for loop. While outer loop is O(n) the inner loop jumps certain calculation. How to find the complexity?

public void function(n) {
                    for(int i = 1; i< n; i++) {
                        for(int j =     1; j <= n;  j += i) {
                                System.out.println("*")
                        }
                    }
                }
Raphael
  • 72,336
  • 29
  • 179
  • 389
manismku
  • 103
  • 3

1 Answers1

0

The inner loopnever stopped for $n \geq 1$ as for the first time i = 0 and j += i never increased the value of j. If we suppose i will be started from 1, for i = 1 the inner loop will be iterated $n$ times. for i = 2 as value of j is increased by step size 2, the number of iterations of the inner loop is $\frac{n}{2}$. Hence, the computation cost of the program is $\sum_{i = 1}^{n-1}\frac{n}{i} = n \sum_{i = 1}^{n-1}\frac{1}{i} = \Theta(n\log(n))$.

OmG
  • 3,572
  • 1
  • 14
  • 23