Array iteration and enumerated in Swift - Time & Space Complexity
When we loop through an array using iteration and the enumerated method, we want to know how the time it takes grows as the array gets bigger.
We ask: How does the number of steps change when the array size increases?
Analyze the time complexity of the following code snippet.
let numbers = [10, 20, 30, 40, 50]
for (index, value) in numbers.enumerated() {
print("Index: \(index), Value: \(value)")
}
This code goes through each item in the array and prints its position and value.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through each element of the array once.
- How many times: Exactly once for each element, so as many times as the array length.
As the array gets bigger, the number of steps grows directly with the number of items.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 steps |
| 100 | 100 steps |
| 1000 | 1000 steps |
Pattern observation: The steps increase evenly as the array size grows.
Time Complexity: O(n)
This means the time to finish grows in a straight line with the number of items in the array.
[X] Wrong: "Using enumerated makes the loop slower because it adds extra work."
[OK] Correct: Enumerated just pairs each item with its index during the same single pass, so it does not add extra loops or slow down the process noticeably.
Understanding how simple loops grow with input size helps you explain your code clearly and shows you know how to think about efficiency in real projects.
"What if we nested another loop inside to compare each element with every other element? How would the time complexity change?"
Practice
enumerated() method do when used on an array in Swift?Solution
Step 1: Understand the purpose of enumerated()
Theenumerated()method returns a sequence of pairs (index, value) for each element in the array.Step 2: Identify what is returned during iteration
Each iteration gives you the position (index) and the element itself (value), allowing you to use both.Final Answer:
It provides both the index and the value of each element during iteration. -> Option AQuick Check:
enumerated() = index + value [OK]
- Thinking enumerated() changes array order
- Believing enumerated() filters or sorts elements
- Confusing enumerated() with map or filter
fruits using enumerated() in Swift?Solution
Step 1: Check the correct use of enumerated()
The methodenumerated()must be called with parentheses to return the sequence.Step 2: Verify tuple unpacking syntax
The for loop must unpack the tuple as(index, value)in parentheses.Final Answer:
for (index, fruit) in fruits.enumerated() { print(index, fruit) } -> Option AQuick Check:
Correct syntax = for (index, fruit) in fruits.enumerated() { print(index, fruit) } [OK]
- Omitting parentheses after enumerated()
- Swapping index and value order in tuple
- Trying to unpack without parentheses
let animals = ["cat", "dog", "bird"]
for (i, animal) in animals.enumerated() {
print("\(i): \(animal)")
}Solution
Step 1: Understand enumerated() output
enumerated() gives index starting at 0 and the element value.Step 2: Trace the print statements
Each line prints index, colon, space, then the animal name.Final Answer:
0: cat 1: dog 2: bird -> Option CQuick Check:
Index starts at 0, prints index: value [OK]
- Assuming index starts at 1
- Printing value before index
- Ignoring the colon and space formatting
let numbers = [10, 20, 30]
for index, value in numbers.enumerated {
print(index, value)
}Solution
Step 1: Check method call syntax
The methodenumeratedmust be called with parentheses:enumerated().Step 2: Verify other parts of the code
Variable names and array declaration are correct; print syntax is valid.Final Answer:
Missing parentheses after enumerated() method call. -> Option DQuick Check:
enumerated() needs () [OK]
- Forgetting parentheses after enumerated
- Swapping index and value order
- Using wrong print syntax
scores = [85, 92, 78, 90], write Swift code using enumerated() to print each score with its position starting from 1, like "Player 1: 85". Which code snippet correctly does this?Solution
Step 1: Use enumerated() to get index and score
enumerated() returns (index, value) tuples; index starts at 0.Step 2: Adjust index to start from 1 in print
Add 1 to index when printing to start counting players from 1.Final Answer:
for (index, score) in scores.enumerated() { print("Player \(index + 1): \(score)") } -> Option BQuick Check:
Index + 1 for counting players [OK]
- Printing index without adding 1
- Swapping index and value in tuple
- Using wrong tuple unpacking order
Ready to prove it?
Pass the test and this pattern moves unknown
