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:
...