## Insertion Sort program in C Language

Insertion sort program in c language algorithm implementation – Insertion sort is used when number of elements is small. It can also be useful when input array is almost sorted only few elements are misplaced in complete big array.

• Time Complexity: O(n^2)
• Auxiliary Space: O(1)
• Boundary Case: Insertion sort takes maximum time to sort if elements are sorted in reverse order. And it takes minimum time (Order of n) when elements are already sorted.
• Algorithm Paradigm: Incremental Approaches method
• Sorting In Place: Yes
• Stable: Yes

In this program user would be asked to enter the number of elements along with the element values and then the programs would sort them in ascending order by using merge sorting algorithm logic.

## Insertion sort algorithm C Program implementation

``````

#include <math.h>
#include <stdio.h>

/* Function to sort an array using insertion sort*/
void insertionSort(int arr[], int n)
{
int i, key, j;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;

/* 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] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}

// A utility function to print an array of size n
void printArray(int arr[], int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
}

/* Driver program to test insertion sort */
int main()
{
int arr[] = { 12, 11, 13, 5, 6 };
int n = sizeof(arr) / sizeof(arr);

insertionSort(arr, n);
printArray(arr, n);

return 0;
}

``````

## OUTPUT

``````

6 7 12 13 14

``````