It is a very simple comparison sort to sort an array. A **comparison sort** compares the current value that we are trying to sort with other values in the array. It works with one item at a time and iteratively places each item in correct place so as to get a required sorted array.

Actually, **insertion** sort is not as efficient as some advanced algorithms such as **heap sort** or **merge sort**. It is not a best option while dealing with large programs. Because of its **low hidden constant value**, an insertion sort outperforms some of the advanced algorithms such as heap or quick sort while dealing with **small arrays**.

**Insertion sort** works by moving from left to right over an array. It will use the **current item** as a **'key'** and searches for a value to the left of that key to find a location where the key should actually resides.

In the following example the array given is 0,-3,5,8,2,7,6

**Iteration 0**- in the first iteration we only have the actual unsorted array that is 0,-3,5,8,2,7,6.**iteration 1**- in this iteration the key is a value at index 1 that is -3. The insertion sort compares the key with the values to the left of that key and proceeds the process. since -3 is less than 0, it moves to the left of 0 there by giving the array as -3,0,5,8,2,7,6.**Iteration 2**- Here the key is 5(value at index 2). It will be compared with the values to its left that is -3 and 0, and placed in its sorted value. So the array after iteration 2 is -3,0,5,8,2,7,6.**Iteration 3**- In this iteration the key value 8 will be compared with the elements to its left and the final array will be -3,0,5,8,2,7,6.**Iteration 4**- In this iteration the key value 2 is compared with the values to its left and is placed in its sorted position. So the final array after iteration 4 is -3,0,2,5,8,7,6.

In the same way, at the end of final iteration the sorted array will be -3,0,2,5,6,7,8

<html> <head> <script> function iSort(array) { for (var p = 1; p < array.length; p++) { if (array[p] < array[0]){ array.unshift(array.splice(p,1)[0]); } else if (array[p] > array[p-1]){ continue; } else { for (var q = 1; q < p; q++) { if (array[p] > array[q-1] && array[p] < array[q]){ array.splice(q,0,array.splice(p,1)[0]); } } } } return array; } document.write(iSort([0,-3,5,8,2,7,6])); </script> </body> </html>

-3,0,2,5,6,7,8

Advertisements

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more