Arrays and Iteration
Reverse Array In Place (Two Pointers)
Walk two indices toward each other from the ends of the array, swapping at each step. Stops when the indices meet or cross. Demonstrates the two-pointer pattern with the smallest possible state.
Algorithm
Canonical input [1, 2, 3, 4, 5, 6, 7] (odd length, middle element stays
put) yields three swap frames and reverses to [7, 6, 5, 4, 3, 2, 1].
Basic Implementation
basic.cs
using System;
class Program {
static void Main() {
int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7 };
int left = 0;
int right = arr.Length - 1;
while (left < right) {
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left = left + 1;
right = right - 1;
}
Console.WriteLine("[" + string.Join(", ", arr) + "]");
}
}
Complexity
- Time: O(n)
- Space: O(1)
Implementation notes
- C#: explicit three-line
int tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp;swap keeps the move visible.Array.Reverse(arr)would hide the lesson. int left = 0;andint right = arr.Length - 1;use plainintindices; theleft < rightguard handles the meet-in-the-middle exit honestly for the odd-length canonical input.- The replay shows both
leftandright, the values about to be swapped, and the array contents after the swap. The loop-exit frame is the moment the pointers meet.
two pointers
`left` starts at index `0`, `right` starts at `n - 1`. Each loop iteration swaps `arr[left]` and `arr[right]` and moves the pointers toward each other.