# Reverse an Array in c/c++

Write a Program to reverse an array in c/c++.

Example,

```Input: 5 4 1 2 4 6
Output: 6 4 2 1 4 5```

It can be implemented in 2 way:-

1. Without Recursion (Iteratively)
2. using Recursion (Recursively)

## Reverse Array without Recursion (Iterative)

In this method, we simply swap the first element with last element, the second element with the second last element, and so on.

See the following illustration

### Algorithm

Let arr be the array. Let N be the size of arr.

1. Initialize i = 0, j = N-1.
2. Repeat following steps while i<j
• temp = arr[i].
• arr[i] = arr[j].
• arr[j] = temp.
• ++i, –j.

### Pseudo Code

```arr: Array we want to reverse
N: Size of array
FUNCTION ReverseArr ( arr , N )
i = 0
j = N – 1
WHILE ( i < j ) DO
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
++i
--j
END WHILE
END FUNCTION```

### Program to Reverse Array in C/C++ (Iteratively)

``````#include<stdio.h>

// function to reverse array
int ReverseArr(int *arr, int n){
int i,j,temp;
i = 0;
j = n -1;
while(i<j){
// swapping arr[i] and arr[j]
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
++i;
--j;
}
}

int main()
{
int arr;
int n,i;

printf("\nEnter Size of Array: ");
scanf("%d",&n);

printf("\nEnter Array Elements: ");
for(i = 0;i<n;++i){
scanf("%d",&arr[i]);
}

ReverseArr(arr,n);

printf("\nArray After Reverse: ");
for(i = 0;i<n;++i){
printf("%d ",arr[i]);
}
printf("\n");

}``````

## Reverse Array using Recursion (Recursively)

This Method is very similar to iterative method. But instead of swapping array elements using loop, we use recursive calls.

First and Last elements are swapped in the first recursive call.

Second and Second Last elements are reversed in next recursive call and so on.

### Algorithm

Let ReverseArr() be the recursive function.

It accepts 3 parameters: array, ith index from front, ith index from last.

ReverseArray(arr,i,j):

1. If i >= j RETURN.
2. Swap arr[i] and arr[j].
3. ReverseArr(arr, i+1 , j-1)

### Pseudo Code

```arr: Array we want to Reverse
N: Size of Array

FUNCTION ReverseArr( arr, i ,j )

IF i >= j THEN
RETURN
END IF

temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
ReverseArr( arr , i+1, j-1 )

END FUNCTION```

## Program to Reverse Array using Recursion in c/c++ (Recursively)

``````#include<stdio.h>

// function to reverse array
void ReverseArray(int *arr, int i, int j){
int temp;

if(i>=j)
return;

temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;

ReverseArray(arr, i+1, j-1);

}

int main()
{
int arr;
int n,i;

printf("\nEnter Size of Array: ");
scanf("%d",&n);

printf("\nEnter Array Elements: ");
for(i = 0;i<n;++i){
scanf("%d",&arr[i]);
}

ReverseArray(arr, 0, n-1);

printf("\nArray After Reverse: ");
for(i = 0;i<n;++i){
printf("%d ",arr[i]);
}
printf("\n");

}``````

## References

https://en.wikipedia.org/wiki/Array_data_structure

What to study next?

Leave Comment if you have any problem