radix Sort

    Our FREE site is mostly funded by the Amazon ads ⇓below⇓.

    Support us by clicking ⇑above⇑ next time you plan to buy a product on Amazon.

    /*
    * Radix sorts an integer array without comparing the integers.
    * It groups the integers by their digits which share the same
    * significant position.
    * For more information see: https://en.wikipedia.org/wiki/Radix_sort
    */
    function radixSort(items, RADIX) {
    
      //default radix is then because we usually count to base 10
      if (RADIX === undefined || RADIX < 1) {
        RADIX = 10;
      }
    
      var maxLength = false;
      var placement = 1;
    
      while (!maxLength) {
        maxLength = true;
        var buckets = [];
    
        for (var i = 0; i < RADIX; i++) {
          buckets.push([]);
        }
    
        for (var j = 0; j < items.length; j++) {
          var tmp = items[j] / placement;
          buckets[Math.floor(tmp % RADIX)].push(items[j]);
          if (maxLength && tmp > 0) {
            maxLength = false;
          }
        }
    
        var a = 0;
        for (var b = 0; b < RADIX; b++) {
          var buck = buckets[b];
          for (var k = 0; k < buck.length; k++) {
            items[a] = buck[k];
            a++;
          }
        }
        placement *= RADIX;
      }
      return items;
    }
    
    //Implementation of radixSort
    
    var ar = [5, 6, 7, 8, 1, 2, 12, 14];
    //Array before Sort
    console.log(ar);
    radixSort(ar);
    //Array after sort
    console.log(ar);