What is the time complexity of the following piece of code in worst case?
s = 0;
for( i = 1; i <= n; ++i ) {
for( j = 1; j <= i * i; j++ ) {
for( k = 1; k <= j and j % i == 0; k++ )
s++;
}
}
Each loop depend on the outer loop variable. How should I proceed in such a case?
The innermost loop will run only occasionally, so how can I evaluate this case?
For every increment of i
middle loop runs i^2
times. For every iteration of middle loop, I'm not able to calculate how many times the innermost loop will run in terms of the outer loop.
I think innermost loop iterates for i
times. The middle loop runs for j = 1 to i^2
and j % i != 0
is in i
cases and for other i
cases, j % i = 0
. As inner loop runs for j % i == 0
it would be iterated i
times.
Now for the times the innermost loop runs i
times, the middle loop runs i^2
times and the outer loop runs i
times, I think the complexity is n^4
.