Hello!
I wanted to know if the var j = 0 step is performed for each iteration of the outer loop? Because if that does not happen, then the inner loop executes only n(2m + 1 + cm) times and the var j = 0 shall be counted as a separate instruction and final answer would be: nm(3 + c) = 3n + 3
Hi @Humaira_Fasih !!
In the provided code, the variable j
is initialized to 0 before the inner loop. However, the variable j
is overwritten in the inner loop declaration as var=0
. This indicates that the variable j
is re-initialized to 0 for each iteration of the outer loop.
Therefore, the inner loop executes m
times for each iteration of the outer loop, resulting in a total of n * m
iterations. The statement(s) inside the inner loop, denoted as “//Statement(s) that take(s) constant time,” are executed n * m
times in total.
In the time complexity analysis, the expression n((2m+2) + cm)
represents the total running time of the inner loop, considering the constant time statements. The additional terms 2n+2
account for the initialization, increment, and test of the outer loop.
The time complexity is determined by the dominant term, which in this case is nm(2+c)
. The 4n+2
term can be ignored as it is of lower order compared to nm(2+c)
. Therefore, the overall time complexity is O(nm)
.
To clarify, the initialization var j = 0
is indeed performed for each iteration of the outer loop, as j
is re-initialized to 0 in the inner loop declaration. The inner loop executes m
times per outer loop iteration.
I hope it helps. Happy Learning
Thank you! Realised this was a obvious answer question after reading the article a bit further on. But thank you so much for the detailed response!