Definition

Insertion Sort is basically insertion of an element from a random set of numbers, to its correct position where it should actually be, by shifting the other elements if required.

Insertion sort is a simple sorting algorithm that allows for efficient, in-place sorting of the array, one element at a time. By in-place sorting, we mean that the original array is modified and no temporary structures are needed.

Worst complexity: n^2
Average complexity: n^2
Best complexity: n
Space complexity: 1

Algorithm 
1. For k ← 2 to length [A]
2. Do key ← A[k]
3. i=k-1
4. while i>0 and A[i]>key
5. do A[i+1] ← A[i]
6. i=i-1
7. A[i+1] ← key

Program 

//Display Array
function display_array($array){
   $message = "";
   $len = count($array);
   for($i=0;$i<$len;$i++){
      $val = $array[$i];
      $message .= $val;
      $message .= ($i==$len-1)? ".":",";
   }
   return $message;
}
//Insertion Sort
function insertionSort($array) {
   $size = count($array);
   for ($step = 1; $step < $size; $step++) {
      $key = $array[$step];
      $j = $step-1;
      // Compare key with each element on the left of it until an element smaller than
      // it is found.
      // For descending order, change key<array[j] to key>array[j].
      while ($j >= 0 && $key < $array[$j]) {
         $array[$j + 1] = $array[$j];
         --$j;
      }
      $array[$j + 1] = $key;
   }
   return $array;
}
$array = [20,3,22,4,5,11,43,42,24,54];
echo "<p>".display_array($array)."</p>";
$display_array = insertionSort($array);
echo "<p>".display_array($display_array)."</p>";

Output

20,3,22,4,5,11,43,42,24,54.

3,4,5,11,20,22,24,42,43,54.

Space Complexity Analysis-

  • It performs all computation in the original array and no other array is used.
  • Selection sort is an in-place algorithm.

Important Notes-

  • Insertion sort is not a very efficient algorithm when data sets are large.
  • This is indicated by the average and worst case complexities.
  • Insertion sort is adaptive and number of comparisons are less if array is partially sorted.

demo

(Visited 283 times, 1 visits today)
Share with Friends :