Bird
Raised Fist0
MATLABdata~5 mins

Nested loops in MATLAB - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Nested loops
O(n^2)
Understanding Time Complexity

When we use nested loops, the program repeats actions inside another repeated action. This can make the program take longer as the input grows.

We want to know how much longer the program takes when the input size gets bigger.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

n = 5;
for i = 1:n
    for j = 1:n
        disp(i * j);
    end
end

This code prints the product of two numbers for every pair from 1 to n, using two loops inside each other.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The inner loop runs a print command for each pair (i, j).
  • How many times: The outer loop runs n times, and for each outer loop, the inner loop runs n times, so total n x n times.
How Execution Grows With Input

As n grows, the total number of print actions grows by n times n.

Input Size (n)Approx. Operations
10100
10010,000
10001,000,000

Pattern observation: When n doubles, the operations become about four times more, showing a square growth.

Final Time Complexity

Time Complexity: O(n^2)

This means the time it takes grows roughly with the square of the input size.

Common Mistake

[X] Wrong: "The inner loop only adds a little extra time, so the total time is just twice as long as one loop."

[OK] Correct: Because the inner loop runs completely for each outer loop step, the total work multiplies, not just adds.

Interview Connect

Understanding nested loops helps you explain how programs handle repeated tasks inside other repeated tasks, a common pattern in coding challenges and real projects.

Self-Check

"What if the inner loop ran only half as many times as the outer loop? How would the time complexity change?"

Practice

(1/5)
1. What does a nested loop in MATLAB do?
for i = 1:2
for j = 1:3
disp([i, j])
end
end
easy
A. Runs one loop inside another to repeat tasks multiple times
B. Runs two loops one after another without overlap
C. Creates a single loop with combined ranges
D. Stops execution after the first loop finishes

Solution

  1. Step 1: Understand the loop structure

    The outer loop runs with i from 1 to 2, and inside it, the inner loop runs with j from 1 to 3.
  2. Step 2: Identify nested loop behavior

    For each i, the inner loop runs fully for all j values, repeating tasks multiple times.
  3. Final Answer:

    Runs one loop inside another to repeat tasks multiple times -> Option A
  4. Quick Check:

    Nested loops repeat inner loop for each outer loop iteration [OK]
Hint: Nested loops repeat inner loop fully for each outer loop step [OK]
Common Mistakes:
  • Thinking loops run sequentially without nesting
  • Confusing nested loops with single combined loops
  • Assuming loops stop early without completing inner loop
2. Which of the following is the correct syntax for a nested for loop in MATLAB?
easy
A. for i = 1:3 disp(i) for j = 1:2 disp(j) end
B. for i = 1:3 for j = 1:2 disp(i+j) end
C. for i = 1:3 for j = 1:2 disp(i+j) end
D. for i = 1:3 for j = 1:2 disp(i+j) end end

Solution

  1. Step 1: Check proper loop nesting and end statements

    for i = 1:3 for j = 1:2 disp(i+j) end end correctly nests the inner loop inside the outer loop and closes both with end.
  2. Step 2: Identify syntax errors in other options

    The other options miss proper indentation or have missing end statements causing syntax errors.
  3. Final Answer:

    for i = 1:3 for j = 1:2 disp(i+j) end end -> Option D
  4. Quick Check:

    Proper nested loops need matching end for each for [OK]
Hint: Each for loop must have its own end statement [OK]
Common Mistakes:
  • Missing end for inner or outer loop
  • Incorrect indentation causing confusion
  • Starting loops without proper nesting
3. What is the output of this MATLAB code?
for i = 1:2
  for j = 1:2
    fprintf('%d ', i*j)
  end
  fprintf('\n')
end
medium
A. 1 2 2 4
B. 1 1 2 2
C. 1 2 2 4
D. 2 4 1 2

Solution

  1. Step 1: Calculate inner loop outputs for each outer loop value

    When i=1, j=1:2, outputs are 1*1=1 and 1*2=2. When i=2, j=1:2, outputs are 2*1=2 and 2*2=4.
  2. Step 2: Format output with new lines

    Each inner loop prints values with space, then outer loop prints newline. So output lines are '1 2 ' and '2 4 '.
  3. Final Answer:

    1 2 2 4 -> Option C
  4. Quick Check:

    Multiply i and j in nested loops for output [OK]
Hint: Multiply outer and inner loop vars for each output [OK]
Common Mistakes:
  • Ignoring newline after inner loop
  • Mixing up i and j values
  • Printing all values in one line
4. Find the error in this nested loop code:
for i = 1:3
  for j = 1:2
    disp(i+j)
end
medium
A. Missing end for outer loop
B. Inner loop range is incorrect
C. disp function is used incorrectly
D. Loop variables i and j are not initialized

Solution

  1. Step 1: Check loop endings

    The inner loop has an end, but the outer loop does not have its closing end.
  2. Step 2: Identify syntax error cause

    Missing the outer loop's end causes MATLAB to throw an error.
  3. Final Answer:

    Missing end for outer loop -> Option A
  4. Quick Check:

    Each for loop needs its own end [OK]
Hint: Count ends: one per for loop [OK]
Common Mistakes:
  • Forgetting to close outer loop
  • Assuming one end closes both loops
  • Misreading error messages
5. You want to create a 3x3 multiplication table using nested loops in MATLAB. Which code correctly fills matrix M with products of row and column indices?
hard
A. M = zeros(3); for i = 1:3 for j = 1:3 M(j,i) = i+j; end end
B. M = zeros(3); for i = 1:3 for j = 1:3 M(i,j) = i*j; end end
C. M = zeros(3); for i = 1:3 for j = 1:3 M(i,j) = i+j; end end
D. M = zeros(3); for i = 1:3 for j = 1:3 M(i,j) = i-j; end end

Solution

  1. Step 1: Understand the multiplication table goal

    The table should store products of row and column indices, so M(i,j) = i*j.
  2. Step 2: Check each option's assignment

    M = zeros(3); for i = 1:3 for j = 1:3 M(i,j) = i*j; end end correctly assigns M(i,j) = i*j. The other options assign sums or differences, not products.
  3. Final Answer:

    M = zeros(3); for i = 1:3 for j = 1:3 M(i,j) = i*j; end end -> Option B
  4. Quick Check:

    Multiplication table uses product of indices [OK]
Hint: Assign M(i,j) = i*j for multiplication table [OK]
Common Mistakes:
  • Using addition or subtraction instead of multiplication
  • Swapping indices in assignment
  • Not initializing matrix before loops
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard