# C Program for Recursive Insertion Sort

Insertion sort is a simple sorting algorithm that works the way we sort playing cards in our hands.
Below is an iterative algorithm for insertion sort

Algorithm

```// Sort an arr[] of size n
insertionSort(arr, n)
Loop from i = 1 to n-1.
a) Pick element arr[i] and insert
it into sorted sequence arr[0..i-1] ```

## C/C++

 `// Recursive C++ program for insertion sort` `#include ` `using` `namespace` `std;`   `// Recursive function to sort an array using` `// insertion sort` `void` `insertionSortRecursive(``int` `arr[], ``int` `n)` `{` `    ``// Base case` `    ``if` `(n <= 1)` `        ``return``;`   `    ``// Sort first n-1 elements` `    ``insertionSortRecursive( arr, n-1 );`   `    ``// Insert last element at its correct position` `    ``// in sorted array.` `    ``int` `last = arr[n-1];` `    ``int` `j = n-2;`   `    ``/* Move elements of arr[0..i-1], that are` `      ``greater than key, to one position ahead` `      ``of their current position */` `    ``while` `(j >= 0 && arr[j] > last)` `    ``{` `        ``arr[j+1] = arr[j];` `        ``j--;` `    ``}` `    ``arr[j+1] = last;` `}`   `// A utility function to print an array of size n` `void` `printArray(``int` `arr[], ``int` `n)` `{` `    ``for` `(``int` `i=0; i < n; i++)` `        ``cout << arr[i] <<``" "``;` `}`   `/* Driver program to test insertion sort */` `int` `main()` `{` `    ``int` `arr[] = {12, 11, 13, 5, 6};` `    ``int` `n = ``sizeof``(arr)/``sizeof``(arr[0]);`   `    ``insertionSortRecursive(arr, n);` `    ``printArray(arr, n);`   `    ``return` `0;` `}`

Please refer complete article on Recursive Insertion Sort for more details!

My Personal Notes arrow_drop_up
Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.