Blog

JavaScript Insertion Sort Algorithm
Posted on July 14, 2015 in Algorithms, JavaScript by Matt Jennings

See this Wikipedia entry for the insertion sort algorithm. This animated GIF from that entry explains more details about how the algorithm should work:
insertion sort algorithm animated GIF from Wikipedia entry

function insertionSort(arr) {
  for(var i = 0; i < arr.length; i++) {
    
    // Set "temp" variable to "arr[i]"
    var temp = arr[i];
    
    // Execute for loop when
    // 1. "j" is assigned to "i"
    // 2. "j" is greater than zero && "temp" (assigned to "arr[i]") is
    //    less than "arr[j - 1]" (AKA "arr[i - 1]")
    // 3. Decrement "j" by 1 until "j" is greater than zero
    for(var j = i; j > 0 && temp < arr[j - 1]; j--) {
      
      // If conditions in the form loop are true assign
      // "arr[j]" (AKA "arr[i]") to the previous element
      // "arr[j - 1]" (AKA "arr[i - 1]")
      arr[j] = arr[j - 1];
    }
    
    // When the for loop completed break out of it and
    // swap the variables "arr[j]" (AKA "arr[i]") AND 
    // "arr[j - 1]" (AKA "arr[i - 1]") when
    // "arr[j] < arr[j - 1]" (AKA "arr[i] < arr[i - 1]")
    arr[j] = temp;
  }
  
  return arr;
}

var x = [5, 1, 19, 17, -8];

// Code below outputs:
// [-8, 1, 5, 17, 19]
console.log(insertionSort(x));

Leave a Reply