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 <iostream>` `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;` `}` |

*chevron_right*

*filter_none*

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.

## Recommended Posts:

- Java Program for Recursive Insertion Sort
- Python Program for Recursive Insertion Sort
- Comparison among Bubble Sort, Selection Sort and Insertion Sort
- Recursive Insertion Sort
- Insertion sort to sort even and odd positioned elements in different orders
- Merge Sort vs. Insertion Sort
- C Program for Insertion Sort
- C Program for Binary Insertion Sort
- Java Program for Binary Insertion Sort
- Python Program for Binary Insertion Sort
- C program for Time Complexity plot of Bubble, Insertion and Selection Sort using Gnuplot
- C++ Program for Recursive Bubble Sort
- Java Program for Recursive Bubble Sort
- Time complexity of insertion sort when there are O(n) inversions?
- An Insertion Sort time complexity question
- Insertion Sort
- Binary Insertion Sort
- Insertion Sort for Doubly Linked List
- Insertion sort using C++ STL
- Insertion Sort by Swapping Elements