Insertion Sort Algorithm
Insertion Sort Algorithm
The same approach is applied in insertion sort. The idea behind the insertion
sort is that first take one element, iterate it through the sorted array. Although it
is simple to use, it is not appropriate for large data sets as the time complexity
of insertion sort in the average case and worst case is O(n2), where n is the
number of items. Insertion sort is less efficient than the other sorting
algorithms like heap sort, quick sort, merge sort, etc.
Insertion sort has various advantages such as -
Simple implementation
Efficient for small data sets
Adaptive, i.e., it is appropriate for data sets that are already substantially
sorted.
Algorithm
The simple steps of achieving the insertion sort are listed as follows
Step 1 - If the element is the first element, assume that it is already sorted. Return 1.
Step2 - Pick the next element, and store it separately in a key.
Step3 - Now, compare the key with all elements in the sorted array.
Step 4 - If the element in the sorted array is smaller than the current element, then
move to the next element. Else, shift greater elements in the array towards the right.
Step 5 - Insert the value.
Step 6 - Repeat until the array is sorted.
Working of Insertion sort Algorithm
Now, let's see the working of the insertion sort Algorithm.
To understand the working of the insertion sort algorithm, let's take an unsorted array. It
will be easier to understand the insertion sort via an example.
Let the elements of array are -
Here, 31 is greater than 12. That means both elements are already in ascending order.
So, for now, 12 is stored in a sorted sub-array.
Now, move to the next two elements and compare them.
Here, 25 is smaller than 31. So, 31 is not at correct position. Now, swap 31 with 25.
Along with swapping, insertion sort will also check it with all elements in the sorted
array.
For now, the sorted array has only one element, i.e. 12. So, 25 is greater than 12. Hence,
the sorted array remains sorted after swapping.
Now, two elements in the sorted array are 12 and 25. Move forward to the next
elements that are 31 and 8.
Now, the sorted array has three items that are 8, 12 and 25. Move to the next items that
are 31 and 32.
Hence, they are already sorted. Now, the sorted array includes 8, 12, 25 and 31.
2. Space Complexity
Space ComplexityO(1)
StableYES
Implementation of insertion sort
Write a program to implement insertion sort in C language.
#include <stdio.h>
int main()
{
int n, array[10], i, j, t, flag = 0;
printf("Enter number of elements\n");
scanf("%d", &n);
printf("Enter %d integers\n", n);
for (i = 0; i < n; i++)
scanf("%d", &array[i]);
for (i = 1 ; i <= n - 1; i++)
{
t = array[i];
for (j = i - 1 ; j >= 0; j--)
{
if (array[j] > t)
{
array[j+1] = array[j];
flag = 1;
}
else
break;
}
if (flag)
array[j+1] = t;
}
printf("Sorted list in ascending order:\n");
for (i = 0; i <= n - 1; i++) {
printf("%d\n", array[i]);
}
return 0;
}
Output:
END