Array Reversal Techniques in DSA C# - Time & Space Complexity
We want to understand how the time taken to reverse an array changes as the array gets bigger.
How does the number of steps grow when we reverse more elements?
Analyze the time complexity of the following code snippet.
public void ReverseArray(int[] arr)
{
int start = 0;
int end = arr.Length - 1;
while (start < end)
{
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
This code reverses the elements of an array by swapping pairs from the start and end moving towards the center.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Swapping two elements in the array.
- How many times: About half the length of the array (n/2 times).
As the array size grows, the number of swaps grows roughly half as fast.
| Input Size (n) | Approx. Operations (Swaps) |
|---|---|
| 10 | 5 |
| 100 | 50 |
| 1000 | 500 |
Pattern observation: The operations grow linearly with input size, just half as many swaps as elements.
Time Complexity: O(n)
This means the time to reverse the array grows directly in proportion to the number of elements.
[X] Wrong: "Reversing an array takes constant time because we just swap elements."
[OK] Correct: Each swap is a step, and the number of swaps grows with the array size, so time grows linearly, not constant.
Understanding this helps you explain how simple operations scale and shows you can analyze loops clearly, a key skill in interviews.
"What if we used recursion to reverse the array instead of a loop? How would the time complexity change?"
Practice
Solution
Step 1: Understand array order
An array has elements arranged from first to last in a sequence.Step 2: Define reversal
Reversing means swapping elements so the last element moves to the front and the first moves to the end, flipping the order.Final Answer:
Changing the order of elements so the last becomes first and first becomes last -> Option CQuick Check:
Reversal = Flip order [OK]
- Confusing reversal with sorting
- Thinking reversal removes elements
- Assuming reversal adds elements
arr in C# using built-in methods?Solution
Step 1: Identify C# array reversal method
C# provides a static methodArray.Reverse()to reverse arrays in place.Step 2: Check syntax correctness
The correct syntax callsArray.Reverse(arr);with capital 'A' and 'R' and no return value.Final Answer:
Array.Reverse(arr); -> Option AQuick Check:
Use Array.Reverse(arr) in C# [OK]
- Using lowercase method names
- Calling reverse as instance method on array
- Using non-existent reverse functions
int[] arr = {1, 2, 3, 4, 5};
Array.Reverse(arr);
Console.WriteLine(string.Join(", ", arr));Solution
Step 1: Understand Array.Reverse effect
The method reverses the array elements in place, so the order flips.Step 2: Trace the output
Original array: 1, 2, 3, 4, 5 becomes 5, 4, 3, 2, 1 after reversal.Final Answer:
5, 4, 3, 2, 1 -> Option DQuick Check:
Reversed array prints 5 to 1 [OK]
- Assuming reversal sorts the array
- Expecting original order after reversal
- Confusing output format
int[] arr = {10, 20, 30};
arr.Reverse();
Console.WriteLine(string.Join(", ", arr));Solution
Step 1: Check arr.Reverse() method
In C#,arr.Reverse()returns a reversed sequence but does not change the original array.Step 2: Understand effect on original array
The original array remains unchanged, so printing it shows original order, not reversed.Final Answer:
arr.Reverse() does not reverse the array in place -> Option AQuick Check:
arr.Reverse() returns reversed IEnumerable, no in-place change [OK]
- Assuming arr.Reverse() changes original array
- Confusing LINQ Reverse with Array.Reverse
- Ignoring return value of arr.Reverse()
arr with an odd number of elements, which approach correctly reverses the array in place without using built-in methods?Solution
Step 1: Understand in-place reversal with two pointers
Start with one pointer at the first element and another at the last element, swap their values.Step 2: Move pointers towards center and swap
Increment the start pointer and decrement the end pointer, continue swapping until pointers meet or cross.Final Answer:
Use two pointers, one at start and one at end, swap elements and move pointers towards center until they meet -> Option BQuick Check:
Two-pointer swap reverses array in place [OK]
- Using sorting instead of reversal
- Creating extra arrays unnecessarily
- Removing elements instead of swapping
Ready to prove it?
Pass the test and this pattern moves unknown
