Array Traversal Patterns in DSA C# - Time & Space Complexity
We want to understand how long it takes to go through all items in an array.
How does the time grow when the array gets bigger?
Analyze the time complexity of the following code snippet.
int SumArray(int[] arr) {
int sum = 0;
for (int i = 0; i < arr.Length; i++) {
sum += arr[i];
}
return sum;
}
This code adds up all numbers in the array by visiting each element once.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Accessing 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 its size.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 steps |
| 100 | 100 steps |
| 1000 | 1000 steps |
Pattern observation: Doubling the array size doubles the work done.
Time Complexity: O(n)
This means the time to complete grows in a straight line with the number of elements.
[X] Wrong: "Since we only add numbers, the time is constant no matter the array size."
[OK] Correct: Even though adding is simple, we must do it for every element, so time grows with array length.
Understanding how simple loops scale helps you explain and optimize code clearly in interviews.
"What if we nested another loop inside to compare each element with every other? How would the time complexity change?"
Practice
int[] arr = {1, 2, 3, 4};
for (int i = 0; i < arr.Length; i++) {
Console.Write(arr[i] + " ");
}Solution
Step 1: Understand the loop range
The loop starts at 0 and runs while i is less than arr.Length (4), so i goes 0,1,2,3.Step 2: Print elements in order
Each iteration prints arr[i], so it prints 1 2 3 4 in order.Final Answer:
Prints all elements of the array from start to end -> Option AQuick Check:
Loop from 0 to length-1 prints all elements [OK]
- Thinking loop prints in reverse
- Confusing loop condition with <= instead of <
- Assuming only first element prints
arr in C# using a foreach loop?Solution
Step 1: Recall foreach syntax
The correct syntax is: foreach (type variable in collection) { ... }Step 2: Match syntax to options
foreach (int i in arr) { Console.Write(i); } matches correct syntax: foreach (int i in arr) { Console.Write(i); }Final Answer:
foreach (int i in arr) { Console.Write(i); } -> Option AQuick Check:
foreach loops use 'variable in collection' syntax [OK]
- Swapping variable and collection order
- Using semicolon instead of 'in'
- Incorrect variable declaration inside foreach
int[] arr = {10, 20, 30, 40};
for (int i = arr.Length - 1; i >= 0; i--) {
Console.Write(arr[i] + " ");
}Solution
Step 1: Analyze loop start and end
Loop starts at arr.Length - 1 = 3 and runs while i >= 0, decrementing i each time.Step 2: Trace printed elements
Prints arr[3]=40, arr[2]=30, arr[1]=20, arr[0]=10 in that order.Final Answer:
40 30 20 10 -> Option CQuick Check:
Loop from end to start prints reversed array [OK]
- Confusing loop direction and printing forward
- Off-by-one errors in loop condition
- Assuming runtime error due to negative index
int[] arr = {5, 10, 15};
for (int i = 0; i <= arr.Length; i++) {
Console.Write(arr[i] + " ");
}Solution
Step 1: Check loop condition
Loop runs while i <= arr.Length, but arr indices go from 0 to arr.Length - 1.Step 2: Identify out-of-range access
When i == arr.Length (3), arr[3] is accessed causing runtime error (IndexOutOfRangeException).Final Answer:
Loop condition should be i < arr.Length, not <= arr.Length -> Option DQuick Check:
Array indices go 0 to length-1, use < not <= [OK]
- Using <= instead of < in loop condition
- Starting loop at 1 instead of 0
- Confusing Write and WriteLine methods
arr, which code snippet correctly prints only the even-indexed elements (0, 2, 4, ...) of the array?Solution
Step 1: Understand requirement
We want to print elements at even indexes: 0, 2, 4, ...Step 2: Analyze options
for (int i = 0; i < arr.Length; i += 2) { Console.Write(arr[i] + " "); } increments i by 2 starting at 0, so it accesses even indexes correctly.
for (int i = 1; i < arr.Length; i += 2) { Console.Write(arr[i] + " "); } accesses odd indexes.
foreach (int i in arr) { if (i % 2 == 0) Console.Write(i + " "); } checks element values for evenness, not indexes.
for (int i = 0; i < arr.Length; i++) { if (arr[i] % 2 == 0) Console.Write(arr[i] + " "); } prints elements with even values, not indexes.Final Answer:
for (int i = 0; i < arr.Length; i += 2) { Console.Write(arr[i] + " "); } -> Option BQuick Check:
Increment index by 2 from 0 to get even indexes [OK]
- Confusing even index with even element value
- Starting loop at 1 for even indexes
- Using foreach without index tracking
Ready to prove it?
Pass the test and this pattern moves unknown
