
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
C++ Program Recursive Insertion Sort
Insertion Sort is one of the sorting algorithms used to sort data by inserting elements like a deck of cards. All the elements are arranged from left to right then considering the first one as already sorted, insert rest to the sorted list on the left. Each element is compared with each element in the left list until it is inserted at its correct position.
Insertion Sort Algorithm
int arr[5]= { 5,4,2,1,3 };
int i, j ;
Traverse from index j=i+1 to j<array size
For each element arr[j] compare it with elements in list arr[0 to i] till element is found such that arr[i]<arr[j] and arr[i+1]>=arr[j].
Place arr[j] in the list and move all greater elements one position right.
End
Recursive Insertion Sort
If array length is 1 then return.
Recursively sor elements at index 0 to array size-1
Insert last element in the sorted array
Examples
Input − Arr[] = { 5,7,2,3,1,4 }; length=6
Output − Sorted array: 1 2 3 4 5 7
Explanation −
5 7 2 3 1 4 → 5 already sorted 5 7 2 3 1 4 → 7 at correct place 2 5 7 3 1 4 → 2 compared with 5,7 and inserted 2 3 5 7 1 4 → 3 compared with 5,7 and inserted 1 2 3 5 7 4 → 1 compared with 2,3,5,7 and inserted 1 2 3 4 5 7 → 4 compared with 5,7 and inserted
Input − Arr[] = { 1, 2, 3, 3, 2 };
Output − Sorted array: 1 2 2 3 3
Explanation −
1, 2, 3, 3, 2 → 1 already sorted 1, 2, 3, 3, 2 → 2 at correct place 1, 2, 3, 3, 2 → 3 at correct place 1, 2, 3, 3, 2 → 3 at correct place 1, 2, 2, 3, 3 → 2 compared with 3,3 and inserted
Approach used in the below program is as follows
In the recursive approach of Bubble sort, the base case is array length = 1. Otherwise traverse the array using single for loop and swap elements accordingly.
Take input array Arr[] and length as number of elements in it.
Function recurbublSort(int arr[], int len) takes the array and its length and sorts the array recursively using bubble sort.
Take a variable temp.
If array length is 1 then return void.
Else traverse the array using single for loop and for each element arr[i]>arr[i+1], swap those elements.
Set temp=arr[i], arr[i]=arr[i+1] and arr[i+1]=temp.
Now decrement length by 1 as the previous loop placed the largest element at the last position.
Do recursive call to recurbublSort(arr,len).
At the end of all calls, when len becomes 1 we will come out of recursion and the array will be sorted.
Print the sorted array inside main.
Example
#include <bits/stdc++.h> using namespace std; void recurbublSort(int arr[], int len){ int temp; if (len == 1){ return; } for (int i=0; i<len-1; i++){ if (arr[i] > arr[i+1]){ temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } len=len-1; recurbublSort(arr, len); } int main(){ int Arr[] = {21, 34, 20, 31, 78, 43, 66}; int length = sizeof(Arr)/sizeof(Arr[0]); recurbublSort(Arr, length); cout<<"Sorted array : "; for(int i=0;i<length;i++){ cout<<Arr[i]<<" "; } return 0; }
Output
If we run the above code it will generate the following Output
Sorted array : 20 21 31 34 43 66 78
- Related Articles
- Python Program for Recursive Insertion Sort
- C Program for Recursive Insertion Sort
- Java Program for Recursive Insertion Sort
- Insertion Sort in Python Program
- Python Program for Insertion Sort
- Java program to implement insertion sort
- C++ Program to Implement Insertion Sort
- Python Program for Binary Insertion Sort
- Java Program for Binary Insertion Sort
- Insertion Sort
- C++ Program for Recursive Bubble Sort?
- Java Program for Recursive Bubble Sort
- C Program for Recursive Bubble Sort
- C++ Program for the Recursive Bubble Sort?
- Golang Program To Sort An Array In Ascending Order Using Insertion Sort
