## Reverse An Array Difficulty: Easy

#### Understanding The Problem

Problem Description

Given an array, the task is to reverse the array.

Examples →

``````Input  : arr[] = {34, 12, 23}
Output : arr[] = {23, 12, 34}``````
``````Input :  arr[] = {1, 2, 3, 4, 5, 6}
Output : arr[] = {6, 5, 4, 3, 2, 1}``````

#### Solution

We will be discussing a simple approach to reverse the array in-place. In place means, we will not be using some auxiliary space.

To reverse an array, we will use the concept of swapping. Swapping is a term used for interchanging the values at two different locations with each other.

Look at the below example to get a clear understanding of the array that should be reversed. So, we can set two pointers at the start and end of the array and start iterating over it till the `(length of array)/2`. For every `idx` , we will swap `array[idx]` with `array[length - idx]` . Thus, the array will be reversed in-place.

Solution Steps

1. Place the two pointers (let `start` and `end)` at the start and end of the array.
2. Swap `arr[start]` and `arr[end]`
3. Increment `start` and decrement `end` with `1`
4. If `start` reached to the value `length/2` or `start ≥ end`, then terminate otherwise repeat from step 2.

Pseudo Code

``````void rvereseArray(int[] arr) {
start = 0
end = arr.length - 1
while (start < end) {
// swap arr[start] and arr[end]
int temp = arr[start]
arr[start] = arr[end]
arr[end] = temp
start = start + 1
end = end - 1
}
}``````

Complexity Analysis

Time Complexity: O(n)

Space Complexity: O(1)

Critical Ideas to Think

• The loop will run only till `length/2` then why the asymptotic time complexity is `O(n)` instead of `O(n/2)` ?
• How did we perform swapping?
• Why did we iterate until `start < end` or `start < (length of array)/2` ?
• What will happen if the while condition would be `start < length of array`, instead of `start < end` in pseudocode? Can you dry run the code over some examples?

#### Suggested Problems To Solve

• Write a program to reverse digits of a number
• Program to reverse a string
• Program to reverse words in a given string.
• Program to reverse the rows in a 2d Array
• Program to Reverse Bits of a Number