Give an array or string and our problem is how to reverse this array(string)
Examples :
Input : arr[] = {9, 2, 3} Output : arr[] = {3, 2, 9} Input : arr[] = {8, 5, 10, 3} Output : arr[] = {3, 10, 5, 8}
Method 1 :- Recursive way
- Define Start as 0 and end as n-1
- swap the arr[start] and arr[end]
- Recursively call the rest of the array.
Implementation of this method is given below
#include <stdio.h> int main() { void reverseArr(int arr[],int start, int end) { if(start<end) { int temp; temp=arr[start]; arr[start]=arr[end]; arr[end]=temp; reverseArr(arr, start+1, end-1); } else return; } void printArr(int arr[],int size) { for(int i=0;i<size;i++) { printf("%d ",arr[i]); } } int arr[] = {8, 5, 10, 3}; printArr(arr, 4); printf("\n"); reverseArr(arr, 0, 3); printf("Reversed array is \n"); printArr(arr, 4); return 0; }
Output :
8 5 10 3 Reversed array is 3 10 5 8
Time Complexity : O(n)
Method 2: Iterative Method
- Define start and end indexes as 0 and n-1 respectively
- in a loop swap arr[start] and arr[end]. and increase start by 1 and decrease end by 1.
Below is the implementation of the program
int main() { void reverseArr(int arr[], int start, int end) { while (start < end) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } } void printArr(int arr[],int size) { for(int i=0;i<size;i++) { printf("%d ",arr[i]); } } int arr[] = {8, 5, 10, 3}; printArr(arr, 4); printf("\n"); reverseArr(arr, 0, 3); printf("Reversed array is \n"); printArr(arr, 4); return 0; }
Output :
8 5 10 3 Reversed array is 3 10 5 8
Time Complexity : O(n)
For more Programming related blogs Visit Us Geekycodes . Follow us on Instagram.
If you’re a college student and have skills in programming languages, Want to earn through blogging? Mail us at geekycomail@gmail.com