Array traversal in C - Time & Space Complexity
When we look at array traversal, we want to know how the time to run the code changes as the array gets bigger.
We ask: How many steps does it take to visit every item in the array?
Analyze the time complexity of the following code snippet.
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
printf("%d\n", arr[i]);
}
}
This code goes through each element of the array and prints it once.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop that visits each array element.
- How many times: Exactly once for each element, so n times.
As the array size grows, the number of steps grows the same way.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 steps |
| 100 | 100 steps |
| 1000 | 1000 steps |
Pattern observation: The steps increase directly with the number of items. Double the items, double the steps.
Time Complexity: O(n)
This means the time to run grows in a straight line with the size of the array.
[X] Wrong: "Visiting each element takes the same time no matter how big the array is."
[OK] Correct: Actually, the total time grows because you do more steps as the array gets bigger, even if each step is quick.
Understanding how array traversal time grows helps you explain and write efficient code in real projects and interviews.
"What if we nested another loop inside to compare each element with every other element? 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 order.Step 2: Match the definition with options
Only Visiting each element of the array one by one describes visiting each element one by one, which is the correct meaning.Final Answer:
Visiting each element of the array one by one -> Option CQuick Check:
Array traversal = visiting elements [OK]
- Confusing traversal with adding or deleting elements
- Thinking traversal means sorting
- Assuming traversal skips elements
arr of size n in C?Solution
Step 1: Understand array indexing in C
Arrays start at index 0 and go up to n-1 for size n.Step 2: Check loop conditions
The loop must start at 0 and run while i is less than n (not equal), so for(int i = 0; i < n; i++) is correct.Final Answer:
for(int i = 0; i < n; i++) -> Option AQuick Check:
Loop from 0 to n-1 = correct traversal [OK]
- Using <= n causes out-of-bounds error
- Starting loop at 1 misses first element
- Using wrong loop condition
int arr[] = {5, 10, 15};
for(int i = 0; i < 3; i++) {
printf("%d ", arr[i]);
}Solution
Step 1: Understand the array elements
The array contains 5, 10, and 15 in order at indices 0, 1, and 2.Step 2: Trace the loop output
The loop prints elements from index 0 to 2 in order, so output is "5 10 15 "Final Answer:
5 10 15 -> Option DQuick Check:
Print elements in order = 5 10 15 [OK]
- Reversing order of output
- Printing extra zero
- Starting loop at wrong index
arr of size 5:for(int i = 0; i <= 5; i++) {
printf("%d ", arr[i]);
}Solution
Step 1: Check loop condition
The loop runs while i <= 5, so i goes from 0 to 5 inclusive (6 iterations).Step 2: Analyze array indexing
Array indices go from 0 to 4 for size 5. Accessing arr[5] is out-of-bounds and causes error.Final Answer:
Loop condition should be i < 5 to avoid out-of-bounds access -> Option AQuick Check:
Use i < size to avoid errors [OK]
- Using <= instead of <
- Starting loop at 1
- Ignoring array size limits
arr of size n, write a code snippet to find the sum of all elements using array traversal. Which of the following is correct?Solution
Step 1: Understand array indexing and loop range
Array indices go from 0 to n-1, so loop must run i from 0 to less than n.Step 2: Check each option for correctness
int sum = 0; for(int i = 0; i <= n; i++) { sum += arr[i]; } uses i <= n, which accesses arr[n] (out-of-bounds). int sum = 0; for(int i = 1; i < n; i++) { sum += arr[i]; } starts at 1, missing arr[0]. int sum = 0; for(int i = n - 1; i >= 0; i--) { sum += arr[i]; } correctly sums all elements in reverse order, but the question asks for traversal in forward order. int sum = 0; for(int i = 0; i < n; i++) { sum += arr[i]; } correctly sums all elements from 0 to n-1 in forward order.Final Answer:
int sum = 0; for(int i = 0; i < n; i++) { sum += arr[i]; } -> Option BQuick Check:
Loop from 0 to n-1 sums all elements [OK]
- Using i <= n causing out-of-bounds
- Starting loop at 1 missing first element
- Looping backwards with wrong indices
Ready to prove it?
Pass the test and this pattern moves unknown
