JavaScript - Insertion Sort Algorithm


The Insertion Sort is a sorting algorithm that works very similar to the way we sort the playing cards when we play. The arrangement of elements in a sorted manner is done through insertion sort.

In this algorithm, the array will be divided virtually into two parts which are sorted and unsorted parts. The values present in unsorted part will be picked and placed at the correct position where it satisfies the sorting order.

The Insertion sort is simple algorithm having simple implementation. Generally, this algorithm is efficient for smart data values. This is suitable for data sets which are already partly sorted.

How Insertion Sort Works?

Consider an array having some elements in it in a random order which are not sorted. Here we can sort the elements by performing insertion sort. So, Lets check the scenario below.

Input: [24, 22, 26, 10, 12]; 
Output: [10, 12, 22, 24, 26];

To know how the insertion sort is working, lets assume an array arr=[24, 22, 26, 10, 12].

Insertion Sort Algorithm

First Pass

  • At first in insertion sort, the initial two elements in the array are compared first.
  • 22 is less than 24 here, thus they are not in ascending order and 24 is not in a correct position. So swap 22 and 24. And for now 24 is stored in a sub array.
Insertion Sort Algorithm

Second Pass

  • Now, compare the next two elements in the array.
Insertion Sort Algorithm
  • Here, both the elements 24 and 26 are in ascending order as 26 is greater than 24. Thus no swapping will be occurred.
  • 24 is also stored in the sub array along with 22.

Third Pass

  • Present there are two elements 22 and 24 are in sub-array.
  • Now compare the next two elements 10 and 26.
Insertion Sort Algorithm
  • As 10 is smaller than 26, Swap both the values.
Insertion Sort Algorithm
  • Even after swapping 10 and 24 are sorted, thus swap again.
Insertion Sort Algorithm
  • Again 10 and 22 are not sorted, so swap again.
Insertion Sort Algorithm
  • Now, 10 is at correct position.

Fourth Pass

  • Currently, the elements in the sorted sub array are 10, 22 and 24.
  • Comparing the next two elements 26 and 12.
Insertion Sort Algorithm
  • As they are not sorted, swap both the values.
Insertion Sort Algorithm
  • Now, 12 is smaller than 24. Thus swap them.
Insertion Sort Algorithm
  • Here 12 is smaller than 22 and they are not sorted, so swap them.
Insertion Sort Algorithm
  • Now, 12 is at correct position and the array is perfectly sorted.

Alogrithm

To sort an array sized n in ascending order using insertion sort algorithm.

  • If it is the first element, it is already sorted. return 1;
  • Pick next element
  • Compare with all elements in the sorted sub-list
  • Shift all the elements in the sorted sub-list that is greater than the value to be sorted
  • Insert the value
  • Repeat until list is sorted

Insertion Sort Implementation

Following is an example of insertion sort

<!DOCTYPE html>
<html>
   <head>
      <title>Insertion Sort Algorithm</title>
   </head>
   <body>
   <p id = "demo"></p>
      <script>
         function insertionSort(arr){
            let n = arr.length;
            for(let i = 1; i < n; i++){
               let current = arr[i];
               let j = i-1; 
               while ((j > -1) && (current < arr[j])) {
                  arr[j+1] = arr[j];
                  j--;
               }
               arr[j+1] = current;
            }
            return arr;
         }
         let arr = [24, 22, 26, 10, 12];
         document.getElementById("demo").innerHTML = insertionSort(arr);
      </script>
   </body>

Output

Lets see the output of the above code snippet.

[10, 12, 22, 24, 26]
Advertisements