Loop execution flow - Time & Space Complexity
Loops are a basic way to repeat actions in code. Understanding how many times a loop runs helps us see how long a program might take.
We want to know how the work grows as the loop runs more times.
Analyze the time complexity of the following code snippet.
for (int i = 0; i < n; i++) {
printf("%d\n", i);
}
This code prints numbers from 0 up to n-1, repeating the print action n times.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The print statement inside the loop.
- How many times: Exactly n times, once for each loop cycle.
As n gets bigger, the number of print actions grows the same way.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 prints |
| 100 | 100 prints |
| 1000 | 1000 prints |
Pattern observation: The work grows directly with n, so doubling n doubles the work.
Time Complexity: O(n)
This means the time to finish grows in a straight line with the size of n.
[X] Wrong: "The loop runs faster as n gets bigger because computers are fast."
[OK] Correct: Even though computers are fast, the loop still does more work when n is bigger, so it takes more time overall.
Knowing how loops affect time helps you explain your code clearly and shows you understand how programs grow with input size.
"What if we added a second nested loop inside the first? How would the time complexity change?"
Practice
Solution
Step 1: Understand loop types
Thedo-whileloop checks its condition after running the loop body once.Step 2: Compare with other loops
Theforandwhileloops check the condition before running the body, so they may not run at all.Final Answer:
do-while loop -> Option AQuick Check:
do-while runs body once before condition check [OK]
- Thinking for or while loops always run once
- Confusing if statement with loops
- Assuming do-while checks condition first
Solution
Step 1: Check for loop syntax
The correct syntax isfor (initialization; condition; increment). for (int i = 0; i < 5; i++) {} matches this.Step 2: Validate loop range
for (int i = 0; i < 5; i++) {} counts i from 0 up to but not including 5, so 0 to 4.Final Answer:
for (int i = 0; i < 5; i++) {} -> Option CQuick Check:
Standard for loop syntax with i from 0 to 4 [OK]
- Using 'for i = 0 to 4' which is not C syntax
- Swapping condition and initialization
- Using <= 5 to count 0 to 4 (includes 5)
int i = 0;
while (i < 3) {
printf("%d ", i);
i++;
}Solution
Step 1: Analyze loop condition and variable
Variable i starts at 0 and increments by 1 each loop while i < 3.Step 2: Trace output values
Loop runs for i = 0, 1, 2 printing each value followed by a space.Final Answer:
0 1 2 -> Option AQuick Check:
while loop prints 0,1,2 then stops [OK]
- Including 3 in output by mistake
- Starting count from 1 instead of 0
- Printing after increment instead of before
int i = 0;
while (i < 5) {
printf("%d ", i);
}Solution
Step 1: Check loop body for changes to i
The variable i is never incremented inside the loop, so i stays 0 forever.Step 2: Understand loop consequence
Without increment, the condition i < 5 is always true, causing an infinite loop.Final Answer:
Missing increment of i inside the loop -> Option BQuick Check:
Infinite loop due to no i++ [OK]
- Thinking condition is wrong instead of missing increment
- Assuming printf format is incorrect
- Declaring i inside loop is optional, not error
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= i; j++) {
printf("%d", j);
}
printf("\n");
}What is the output?
Solution
Step 1: Understand outer loop iterations
The outer loop runs i from 1 to 3, inclusive, so 3 times.Step 2: Trace inner loop for each i
For each i, inner loop runs j from 1 to i, printing j values without spaces.Step 3: Combine outputs
Lines printed are:
i=1: "1"
i=2: "12"
i=3: "123"
Each followed by newline.Final Answer:
1 12 123 -> Option DQuick Check:
Nested loops print increasing sequences per line [OK]
- Confusing inner loop range with outer loop
- Printing j values incorrectly
- Missing newline after each inner loop
Ready to prove it?
Pass the test and this pattern moves unknown
