Array traversal in C++ - Time & Space Complexity
When we go through each item in an array one by one, we want to know how the time it takes grows as the array gets bigger.
We ask: How does the work increase when the array size increases?
Analyze the time complexity of the following code snippet.
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
This code goes through each element of the array and prints it out once.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Accessing and printing each element of the array.
- How many times: Exactly once for each of the n elements in the array.
As the array gets bigger, the number of steps grows directly with the number of elements.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 steps |
| 100 | 100 steps |
| 1000 | 1000 steps |
Pattern observation: Doubling the array size doubles the work needed.
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: "Since the loop is simple, it must be constant time O(1)."
[OK] Correct: Even a simple loop that touches every element depends on how many elements there are, so time grows with n, not fixed.
Understanding how simple loops scale helps you explain and improve code efficiency in many real tasks.
"What if we nested another loop inside to compare every element with every other? How would the time complexity change?"
Practice
Solution
Step 1: Understand the term 'array traversal'
Array traversal means going through each element in the array in sequence.Step 2: Match the definition to the options
Visiting each element of the array one by one correctly describes visiting each element one by one.Final Answer:
Visiting each element of the array one by one -> Option AQuick Check:
Array traversal = visiting elements in order [OK]
- Confusing traversal with sorting
- Thinking traversal means deleting elements
- Mixing traversal with copying arrays
arr of size n in C++?Solution
Step 1: Identify valid index range for array traversal
Array indices in C++ start at 0 and go up to n-1, so loop should run from 0 to less than n.Step 2: Check each option's loop condition
for(int i = 0; i < n; i++) { /* access arr[i] */ } uses i from 0 to i < n, which is correct. Others either start at 1 or go out of bounds.Final Answer:
for(int i = 0; i < n; i++) { /* access arr[i] */ } -> Option DQuick Check:
Loop from 0 to n-1 = correct traversal [OK]
- Starting loop at 1 instead of 0
- Using <= n causing out-of-bounds access
- Decrementing loop without correct index
int arr[] = {2, 4, 6};
for(int i = 0; i < 3; i++) {
std::cout << arr[i] << " ";
}Solution
Step 1: Understand the loop and array elements
The array has elements 2, 4, 6 at indices 0, 1, 2. The loop runs from i=0 to i=2.Step 2: Print elements in order
Each iteration prints arr[i] followed by a space: 2, then 4, then 6.Final Answer:
2 4 6 -> Option CQuick Check:
Print elements in order = 2 4 6 [OK]
- Expecting extra zero at end
- Printing elements in reverse order
- Confusing array indices with values
int arr[4] = {1, 2, 3, 4};
for(int i = 0; i <= 4; i++) {
std::cout << arr[i] << " ";
}Solution
Step 1: Check loop condition against array size
The array has size 4, valid indices are 0 to 3. Loop runs while i <= 4, which includes i=4 (out of bounds).Step 2: Correct the loop condition
Change condition to i < 4 to avoid accessing arr[4] which is invalid.Final Answer:
Loop condition should be i < 4, not i <= 4 -> Option AQuick Check:
Loop must stay within 0 to size-1 [OK]
- Using <= instead of < causing out-of-bounds
- Starting loop at 1 instead of 0
- Increasing array size unnecessarily
arr of size n, which code snippet correctly calculates the sum of all elements using array traversal?Solution
Step 1: Initialize sum and loop correctly
Sum should start at 0. Loop must run from i=0 to i < n to include all elements.Step 2: Check each option for correctness
int sum = 0; for(int i = 0; i < n; i++) { sum += arr[i]; } initializes sum to 0 and loops correctly. Others either start sum wrong or loop out of bounds.Final Answer:
int sum = 0; for(int i = 0; i < n; i++) { sum += arr[i]; } -> Option BQuick Check:
Sum all elements from index 0 to n-1 [OK]
- Starting sum with arr[0] and looping incorrectly
- Looping with i <= n causing out-of-bounds
- Skipping first element by starting at i=1
Ready to prove it?
Pass the test and this pattern moves unknown
