Solution: Nested Loop with Multiplication (Advanced)
Learn how to compute the Big O of an advanced and complex algorithm with nested loops involving multiplication.
We'll cover the following...
Solution #
int n = 10; // 'n' can be anythingint sum = 0;for (int i = 0; i < n; i++){int j = 1;while (j < i){sum += 1;j *= 2;}System.Console.WriteLine(sum);}
Explanation
In the main function, the outer loop is because it iterates over n
. The inner while
loop iterates over i
, which is always less than n
, and j
is doubled each time. Therefore, we can say that it is . Therefore, the total time complexity of the program given above becomes:
Here’s another way to arrive at the same result. Let’s look at the inner loop once again.
The inner loop depends upon j
, which is less than i
and is multiplied by 2
in each iteration. This means that the complexity of the inner loop is . But, the value of i
at each iteration of the outer loop is different. The total complexity of the inner loop in terms of n
can be calculated as such:
...