Bird
Raised Fist0
DSA C#programming

Array Traversal Patterns in DSA C#

Choose your learning style10 modes available
Mental Model
We look at each item in an array one by one to do something with it.
Analogy: Like reading a list of names on a paper from top to bottom, checking each name in order.
Index: 0   1   2   3   4
Array: [5]->[3]->[8]->[1]->[7]
         ↑
Dry Run Walkthrough
Input: array: [5, 3, 8, 1, 7], goal: print each element in order
Goal: Visit every element from start to end and show its value
Step 1: Start at index 0, read value 5
Index: 0   1   2   3   4
Array: [5]->[3]->[8]->[1]->[7]
         ↑
Why: We begin at the first element to start traversal
Step 2: Move to index 1, read value 3
Index: 0   1   2   3   4
Array: [5]->[3]->[8]->[1]->[7]
             ↑
Why: Next element must be visited after the first
Step 3: Move to index 2, read value 8
Index: 0   1   2   3   4
Array: [5]->[3]->[8]->[1]->[7]
                 ↑
Why: Continue moving forward to cover all elements
Step 4: Move to index 3, read value 1
Index: 0   1   2   3   4
Array: [5]->[3]->[8]->[1]->[7]
                     ↑
Why: Keep going until the last element
Step 5: Move to index 4, read value 7
Index: 0   1   2   3   4
Array: [5]->[3]->[8]->[1]->[7]
                         ↑
Why: Last element to visit before finishing
Result:
5 -> 3 -> 8 -> 1 -> 7
Annotated Code
DSA C#
using System;

class ArrayTraversal {
    public static void TraverseAndPrint(int[] arr) {
        for (int i = 0; i < arr.Length; i++) {
            Console.Write(arr[i]);
            if (i < arr.Length - 1) Console.Write(" -> ");
        }
        Console.WriteLine();
    }

    static void Main() {
        int[] array = {5, 3, 8, 1, 7};
        TraverseAndPrint(array);
    }
}
for (int i = 0; i < arr.Length; i++) {
advance index i from start to end to visit each element
Console.Write(arr[i]);
print current element at index i
if (i < arr.Length - 1) Console.Write(" -> ");
print arrow between elements except after last
OutputSuccess
5 -> 3 -> 8 -> 1 -> 7
Complexity Analysis
Time: O(n) because we visit each of the n elements once
Space: O(1) because we only use a few variables regardless of array size
vs Alternative: Compared to random access, traversal is simple and direct with no extra cost
Edge Cases
empty array
no elements printed, no errors
DSA C#
for (int i = 0; i < arr.Length; i++) {
single element array
prints the single element without arrow
DSA C#
if (i < arr.Length - 1) Console.Write(" -> ");
When to Use This Pattern
When you need to process or check every item in a list or array, use array traversal to visit each element in order.
Common Mistakes
Mistake: Using <= instead of < in loop condition causing out-of-range error
Fix: Change loop condition to i < arr.Length to stay within valid indexes
Mistake: Printing arrow after last element causing extra arrow at end
Fix: Add condition to print arrow only if current index is before last
Summary
It visits each element in an array one by one to perform an action.
Use it when you want to look at or process every item in a list or array.
Remember to start at index 0 and stop before the array length to avoid errors.

Practice

(1/5)
1. What does the following C# code do?
int[] arr = {1, 2, 3, 4};
for (int i = 0; i < arr.Length; i++) {
Console.Write(arr[i] + " ");
}
easy
A. Prints all elements of the array from start to end
B. Prints all elements of the array in reverse order
C. Prints only the first element of the array
D. Causes a runtime error due to wrong loop condition

Solution

  1. 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.
  2. Step 2: Print elements in order

    Each iteration prints arr[i], so it prints 1 2 3 4 in order.
  3. Final Answer:

    Prints all elements of the array from start to end -> Option A
  4. Quick Check:

    Loop from 0 to length-1 prints all elements [OK]
Hint: Loop from 0 to length-1 prints all elements in order [OK]
Common Mistakes:
  • Thinking loop prints in reverse
  • Confusing loop condition with <= instead of <
  • Assuming only first element prints
2. Which of the following is the correct syntax to traverse an array arr in C# using a foreach loop?
easy
A. foreach (int i in arr) { Console.Write(i); }
B. foreach (arr in int i) { Console.Write(i); }
C. foreach (int arr in i) { Console.Write(i); }
D. foreach (int i; arr) { Console.Write(i); }

Solution

  1. Step 1: Recall foreach syntax

    The correct syntax is: foreach (type variable in collection) { ... }
  2. 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); }
  3. Final Answer:

    foreach (int i in arr) { Console.Write(i); } -> Option A
  4. Quick Check:

    foreach loops use 'variable in collection' syntax [OK]
Hint: Remember foreach uses 'variable in collection' syntax [OK]
Common Mistakes:
  • Swapping variable and collection order
  • Using semicolon instead of 'in'
  • Incorrect variable declaration inside foreach
3. What is the output of the following code?
int[] arr = {10, 20, 30, 40};
for (int i = arr.Length - 1; i >= 0; i--) {
  Console.Write(arr[i] + " ");
}
medium
A. 40 30 20
B. 10 20 30 40
C. 40 30 20 10
D. Runtime error due to loop condition

Solution

  1. Step 1: Analyze loop start and end

    Loop starts at arr.Length - 1 = 3 and runs while i >= 0, decrementing i each time.
  2. Step 2: Trace printed elements

    Prints arr[3]=40, arr[2]=30, arr[1]=20, arr[0]=10 in that order.
  3. Final Answer:

    40 30 20 10 -> Option C
  4. Quick Check:

    Loop from end to start prints reversed array [OK]
Hint: Loop from length-1 down to 0 prints array in reverse [OK]
Common Mistakes:
  • Confusing loop direction and printing forward
  • Off-by-one errors in loop condition
  • Assuming runtime error due to negative index
4. Find the error in this array traversal code:
int[] arr = {5, 10, 15};
for (int i = 0; i <= arr.Length; i++) {
  Console.Write(arr[i] + " ");
}
medium
A. Array declaration is incorrect
B. Variable i should start from 1, not 0
C. Console.Write should be Console.WriteLine
D. Loop condition should be i < arr.Length, not <= arr.Length

Solution

  1. Step 1: Check loop condition

    Loop runs while i <= arr.Length, but arr indices go from 0 to arr.Length - 1.
  2. Step 2: Identify out-of-range access

    When i == arr.Length (3), arr[3] is accessed causing runtime error (IndexOutOfRangeException).
  3. Final Answer:

    Loop condition should be i < arr.Length, not <= arr.Length -> Option D
  4. Quick Check:

    Array indices go 0 to length-1, use < not <= [OK]
Hint: Use i < arr.Length to avoid out-of-range errors [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Starting loop at 1 instead of 0
  • Confusing Write and WriteLine methods
5. Given an integer array arr, which code snippet correctly prints only the even-indexed elements (0, 2, 4, ...) of the array?
hard
A. foreach (int i in arr) { if (i % 2 == 0) Console.Write(i + " "); }
B. for (int i = 0; i < arr.Length; i += 2) { Console.Write(arr[i] + " "); }
C. for (int i = 1; i < arr.Length; i += 2) { Console.Write(arr[i] + " "); }
D. for (int i = 0; i < arr.Length; i++) { if (arr[i] % 2 == 0) Console.Write(arr[i] + " "); }

Solution

  1. Step 1: Understand requirement

    We want to print elements at even indexes: 0, 2, 4, ...
  2. 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.
  3. Final Answer:

    for (int i = 0; i < arr.Length; i += 2) { Console.Write(arr[i] + " "); } -> Option B
  4. Quick Check:

    Increment index by 2 from 0 to get even indexes [OK]
Hint: Increment loop index by 2 starting at 0 for even indexes [OK]
Common Mistakes:
  • Confusing even index with even element value
  • Starting loop at 1 for even indexes
  • Using foreach without index tracking
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