Software & Finance





C Programming (Turbo C++ Compiler) 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 Bubble Sort Algorithm

The complete program and test run output are given below:


Source Code


#include <stdio.h>

#include <conio.h>

 

int InsertionSort()

{

    int max;

    int *numarray = 0;
int i,j,k,temp;

printf(
"\nProgram for Ascending order of Numeric Values using INSERTION SORT");

    printf("\n\nEnter the total number of elements: ");

    scanf("%d", &max);   

 

    numarray = (int*) malloc(sizeof(int) * max);

 

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

    {

        printf("\nEnter [%d] element: ", i + 1);

        scanf("%d", &numarray[i]);

    }

 

    printf("Before Sorting   : ");

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

        printf("%d ", numarray[k])

    printf("\n");

 

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

    {

        j = i;

        while(j > 0)

        {

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

            {

                temp = numarray[j - 1];

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

                numarray[j] = temp;

                j--;

            }

            else

                break;

        }

        printf("After iteration %d ": ", i);

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

            printf("%d ", numarray[k] );

        printf("/*** %d numbers from the begining of the array are input and they are sorted ***/\n", i + 1);

    }

 

    printf("\n\nThe numbers in ascending orders are given below:\n\n");

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

    {

        printf("Sorted [%d] element: %d\n",i + 1, numarray[i]);

    }

 

    free(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 [1] element: 80

Enter [2] element: 60

Enter [3] element: 40

Enter [4] element: 20

Enter [5] element: 10

Enter [6] element: 30

Enter [7] element: 50

Enter [8] 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 [1] element: 10

Sorted [2] element: 20

Sorted [3] element: 30

Sorted [4] element: 40

Sorted [5] element: 50

Sorted [6] element: 60

Sorted [7] element: 70

Sorted [8] element: 80