How to sort an array using recursion in C++
In this post, we will learn how to sort an array using recursion in C++ programming. An array is a continuous memory block in which elements can be extracted sequentially. for example a[]=5 3 2 4 1
input:
n=5 before sorting:5 3 2 4 1
output:
after sorting:1 2 3 4 5
Sorting an array using recursion in C++
Lets consider a situation where we have sorted elements up to (n-2)th index,then we have given array a[] as 2 3 4 5 1. the last element needs to get inserted in its actual position for complete sorting of given array as 1 2 3 4 5.
So we will create recursive function for sorting and inserting the elements.
In sort function,if number of elements in array will be 0 or 1 then we will return the array. For each recursive call, last element will be inserted to its actual position.
void sorting(vector<int>&v) { if(v.size()<=1) return; int temp=v[v.size()-1]; v.pop_back(); sorting(v); insertion(v,temp); }
insertion function:
void insertion(vector<int>&v,int temp) { if(v.size()==0 || v[v.size()-1]<=temp) { v.push_back(temp); return; } int x=v[v.size()-1]; v.pop_back(); insertion(v,temp); v.push_back(x); }
Code for sorting the array using recursion:
#include <bits/stdc++.h> using namespace std; void insertion(vector<int>&v,int temp) { if(v.size()==0 || v[v.size()-1]<=temp) { v.push_back(temp); return; } int x=v[v.size()-1]; v.pop_back(); insertion(v,temp); v.push_back(x); } void sorting(vector<int>&v) { if(v.size()<=1) return; int temp=v[v.size()-1]; v.pop_back(); sorting(v); insertion(v,temp); } int main() { vector<int>v={5,3,2,4,1}; sorting(v); for(auto it:v) cout<<it<<" "; return 0; }
input: 5 3 2 4 1 output: 1 2 3 4 5
From the output, you can see that we have successfully completed our task by sorting the array.
Leave a Reply