C Program to Reverse an Array or String
Given an array (or string), the task is to reverse the array/string.
Examples :Â
Â
Input : arr[] = {1, 2, 3} Output : arr[] = {3, 2, 1} Input : arr[] = {4, 5, 1, 2} Output : arr[] = {2, 1, 5, 4}
Â
Â
Iterative way :
Â
1) Initialize start and end indexes as start = 0, end = n-1Â
2) In a loop, swap arr[start] with arr[end] and change start and end as follows :Â
start = start +1, end = end – 1
Â
Â
Another example to reverse a string:
Â
Below is the implementation of the above approach :Â
Â
C
// Iterative C program to reverse an array #include<stdio.h> /* Function to reverse arr[] from start to end*/ void rvereseArray( int arr[], int start, int end) { int temp; while (start < end) { temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } } /* Utility that prints out an array on a line */ void printArray( int arr[], int size) { int i; for (i=0; i < size; i++) printf ( "%d " , arr[i]); printf (" "); } /* Driver function to test above functions */ int main() { int arr[] = {1, 2, 3, 4, 5, 6}; int n = sizeof (arr) / sizeof (arr[0]); printArray(arr, n); rvereseArray(arr, 0, n-1); printf ("Reversed array is "); printArray(arr, n); return 0; } |
Output :Â
1 2 3 4 5 6 Reversed array is 6 5 4 3 2 1
Time Complexity : O(n)
Recursive Way :
Â
1) Initialize start and end indexes as start = 0, end = n-1Â
2) Swap arr[start] with arr[end]Â
3) Recursively call reverse for rest of the array.
Below is the implementation of the above approach :Â
Â
C
// Recursive C program to reverse an array #include <stdio.h> /* Function to reverse arr[] from start to end*/ void rvereseArray( int arr[], int start, int end) { int temp; if (start >= end) return ; temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; rvereseArray(arr, start+1, end-1); } /* Utility that prints out an array on a line */ void printArray( int arr[], int size) { int i; for (i=0; i < size; i++) printf ( "%d " , arr[i]); printf ( "\n" ); } /* Driver function to test above functions */ int main() { int arr[] = {1, 2, 3, 4, 5, 6}; printArray(arr, 6); rvereseArray(arr, 0, 5); printf ( "Reversed array is \n" ); printArray(arr, 6); return 0; } |
Output :Â
1 2 3 4 5 6 Reversed array is 6 5 4 3 2 1
Time Complexity : O(n)
Please write comments if you find any bug in the above programs or other ways to solve the same problem.
Â
Please Login to comment...