Bird
Raised Fist0
PowerShellscripting~5 mins

ForEach loop in PowerShell - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: ForEach loop
O(n)
Understanding Time Complexity

When using a ForEach loop in PowerShell, it is important to understand how the time it takes to run grows as the list gets bigger.

We want to know how the number of steps changes when the input list grows.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


$numbers = 1..100
foreach ($num in $numbers) {
    Write-Output $num
}
    

This code prints each number from a list of numbers one by one.

Identify Repeating Operations
  • Primary operation: The loop runs once for each item in the list.
  • How many times: Exactly as many times as there are items in the list.
How Execution Grows With Input

As the list gets bigger, the number of steps grows in a straight line with the list size.

Input Size (n)Approx. Operations
1010 steps
100100 steps
10001000 steps

Pattern observation: Doubling the list size doubles the work done.

Final Time Complexity

Time Complexity: O(n)

This means the time to finish grows directly in proportion to the number of items.

Common Mistake

[X] Wrong: "The loop runs in constant time no matter how big the list is."

[OK] Correct: Each item must be handled once, so more items mean more steps.

Interview Connect

Understanding how loops grow with input size helps you explain your code clearly and shows you know how to write efficient scripts.

Self-Check

"What if we nested one ForEach loop inside another over the same list? How would the time complexity change?"

Practice

(1/5)
1. What does the foreach loop do in PowerShell?
easy
A. Creates a new collection from scratch
B. Runs code only once regardless of the collection
C. Repeats a block of code for each item in a collection
D. Stops the script immediately

Solution

  1. Step 1: Understand the foreach loop purpose

    The foreach loop is designed to repeat actions for every item in a list or collection.
  2. Step 2: Compare options to this purpose

    Only Repeats a block of code for each item in a collection correctly describes repeating code for each item in a collection.
  3. Final Answer:

    Repeats a block of code for each item in a collection -> Option C
  4. Quick Check:

    foreach = repeat for each item [OK]
Hint: Think: foreach means 'for each item' repeat [OK]
Common Mistakes:
  • Confusing foreach with a one-time action
  • Thinking foreach creates new collections
  • Believing foreach stops the script
2. Which of the following is the correct syntax for a foreach loop in PowerShell?
easy
A. foreach ($item in $list) { Write-Output $item }
B. foreach $item in $list { Write-Output $item }
C. foreach ($item : $list) { Write-Output $item }
D. foreach ($item; $list) { Write-Output $item }

Solution

  1. Step 1: Recall correct foreach syntax

    PowerShell foreach loops use: foreach ($var in $collection) { ... }
  2. Step 2: Match options to syntax

    Only foreach ($item in $list) { Write-Output $item } uses the correct 'in' keyword and parentheses.
  3. Final Answer:

    foreach ($item in $list) { Write-Output $item } -> Option A
  4. Quick Check:

    Syntax uses 'in' keyword inside parentheses [OK]
Hint: Look for 'foreach ($var in $collection)' pattern [OK]
Common Mistakes:
  • Omitting parentheses around variable and collection
  • Using ':' or ';' instead of 'in'
  • Missing the 'in' keyword
3. What will be the output of this PowerShell script?
foreach ($num in 1..3) { Write-Output ($num * 2) }
medium
A. 2 4 6
B. 1 2 3
C. 3 6 9
D. Error: Invalid syntax

Solution

  1. Step 1: Understand the loop range

    The loop runs for numbers 1, 2, and 3.
  2. Step 2: Calculate output for each iteration

    Each number is multiplied by 2, so outputs are 2, 4, and 6.
  3. Final Answer:

    2 4 6 -> Option A
  4. Quick Check:

    1*2=2, 2*2=4, 3*2=6 [OK]
Hint: Multiply each loop number by 2 mentally [OK]
Common Mistakes:
  • Confusing the range operator '..'
  • Thinking output is original numbers
  • Expecting syntax error
4. Identify the error in this PowerShell foreach loop:
foreach $item in $array { Write-Output $item }
medium
A. No error, code is correct
B. Missing parentheses around the loop variable and collection
C. Using $item instead of $i as loop variable
D. Incorrect use of Write-Output

Solution

  1. Step 1: Check foreach syntax

    PowerShell requires parentheses around the variable and collection in foreach loops.
  2. Step 2: Identify missing parentheses

    The code lacks parentheses: it should be foreach ($item in $array) { ... }
  3. Final Answer:

    Missing parentheses around the loop variable and collection -> Option B
  4. Quick Check:

    foreach needs parentheses [OK]
Hint: Always use parentheses in foreach syntax [OK]
Common Mistakes:
  • Omitting parentheses
  • Confusing variable names
  • Thinking Write-Output causes error
5. You have a list of filenames stored in $files. You want to print only those filenames that end with '.txt' using a foreach loop. Which script correctly does this?
hard
A. foreach ($file in $files) { if ($file -eq '*.txt') { Write-Output $file } }
B. foreach ($file in $files) { if ($file contains '.txt') { Write-Output $file } }
C. foreach ($file in $files) { Write-Output $file -match '.txt' }
D. foreach ($file in $files) { if ($file -like '*.txt') { Write-Output $file } }

Solution

  1. Step 1: Understand filtering condition

    To check if a filename ends with '.txt', use the '-like' operator with '*.txt' pattern.
  2. Step 2: Verify foreach loop and condition

    foreach ($file in $files) { if ($file -like '*.txt') { Write-Output $file } } correctly uses foreach with an if condition checking '-like "*.txt"' and outputs matching files.
  3. Final Answer:

    foreach ($file in $files) { if ($file -like '*.txt') { Write-Output $file } } -> Option D
  4. Quick Check:

    Use '-like' with wildcard for pattern match [OK]
Hint: Use '-like "*.txt"' inside if in foreach [OK]
Common Mistakes:
  • Using '-eq' instead of '-like' for pattern matching
  • Misusing '-match' without if condition
  • Using 'contains' which is invalid here
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