# Visual C++ Sorting Algorithm - Insertion Sort

We often using sorting algorithm to sort numbers and strings. Also we have many sorting algorithms. I have explained here on how Insertion sort algorithm works. Look at the yellow color high lighting section on output to understand how algorithm works after each iteration.

Click here for C++ Bubble Sort Algorithm
Click here for C++ insertion Sort Algorithm
Click here for C++ Merge Sort Recursive Algorithm
Click here for C++ Merge Sort Iterative Algorithm
Click here for C++ Quick Sort Recursive Algorithm
Click here for C++ Quick Sort Iterative Algorithm

The complete program and test run output are given below:

## Source Code

#include <iostream>

#include <string>

int InsertionSort()

{

int max;

std::cout << "\nProgram for Ascending order of Numeric Values using INSERTION SORT";

std::cout << "\n\nEnter the total number of elements: ";

std::cin >> max;

int *numarray = new int[max];

for(int i = 0; i < max; i++)

{

std::cout << "\nEnter [" << i + 1 << "] element: ";

std::cin >> numarray[i];

}

std::cout << "Before Sorting   : ";

for(int k = 0; k < max; k++)

std::cout << numarray[k] << " ";

std::cout << "\n";

for(int i = 1; i < max; i++)

{

int j = i;

while(j > 0)

{

if(numarray[j-1] > numarray[j])

{

int temp = numarray[j - 1];

numarray[j - 1] = numarray[j];

numarray[j] = temp;

j--;

}

else

break;

}

std::cout << "After iteration " << i << ": ";

for(int k = 0; k < max; k++)

std::cout << numarray[k] << " ";

std::cout << "/*** " << i + 1 << " numbers from the begining of the array are input and they are sorted ***/\n";

}

std::cout << "\n\nThe numbers in ascending orders are given below:\n\n";

for(int i = 0; i < max; i++)

{

std::cout << "Sorted [" << i + 1 << "] element: ";

std::cout << numarray[i];

std::cout << "\n";

}

delete [] numarray;

return 0;

}

int main()

{

InsertionSort();

return 0;

}

## Output

Program for Ascending order of Numeric Values using INSERTION SORT

Enter the total number of elements: 8

Enter  element: 80

Enter  element: 60

Enter  element: 40

Enter  element: 20

Enter  element: 10

Enter  element: 30

Enter  element: 50

Enter  element: 70

Before Sorting   : 80 60 40 20 10 30 50 70

After iteration 1: 60 80 40 20 10 30 50 70

After iteration 2: 40 60 80 20 10 30 50 70

After iteration 3: 20 40 60 80 10 30 50 70

After iteration 4: 10 20 40 60 80 30 50 70

After iteration 5: 10 20 30 40 60 80 50 70

After iteration 6: 10 20 30 40 50 60 80 70

After iteration 7: 10 20 30 40 50 60 70 80

The numbers in ascending orders are given below:

Sorted  element: 10

Sorted  element: 20

Sorted  element: 30

Sorted  element: 40

Sorted  element: 50

Sorted  element: 60

Sorted  element: 70

Sorted  element: 80