Javascript Sort (v2)

Revision 2 of this benchmark created on


Setup

function merge(left, right) {
      var result = [];
      while (left.length > 0 && right.length > 0) {
        if (left[0] < right[0]) {
          result.push(left.shift());
        } else {
          result.push(right.shift());
        }
      }
    
      return result.concat(left).concat(right);
    
    }
    
    function mergeSort(arr) {
    
      if (arr.length <= 1) {
        return arr;
      }
    
      var middle = Math.floor(arr.length / 2);
      var left = arr.slice(0, middle);
      var right = arr.slice(middle);
    
      return merge(mergeSort(left), mergeSort(right));
    
    }
    
    function quickSort(arr) {
      if (arr.length <= 1) {
        return arr;
      }
      var pivot = arr.splice(Math.floor(arr.length / 2), 1)[0];
      var left = [];
      var right = [];
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] < pivot) {
          left.push(arr[i]);
        } else {
          right.push(arr[i]);
        }
      }
    
      return quickSort(left).concat([pivot], quickSort(right));
    }
    
    
    function bubbleSort(arr) {
      if (arr.length <= 1) {
        return arr;
      }
      for (var i = arr.length - 1; i > 0; i--) {
        for (var j = i - 1; j >= 0; j--) {
          if (arr[j] < arr[j - 1]) {
            var tmp = arr[j];
            arr[j] = arr[j - 1];
            arr[j - 1] = tmp;
          }
        }
      }
    
      return arr;
    }
    
    function selectSort(arr) {
      var min, tmp;
      for (var i = 0; i < arr.length; i++) {
        min = i;
        for (var j = i + 1; j < arr.length; j++) {
          if (arr[min] > arr[j]) {
            min = j;
          }
        }
        if (min != i) {
          tmp = arr[i];
          arr[i] = arr[min];
          arr[min] = tmp;
        }
      }
    
      return arr;
    }
    
    function insertSort(arr) {
      for (var i = 1; i < arr.length; i++) {
        var tmp = arr[i],
            j = i;
        while (arr[j - 1] > tmp) {
          arr[j] = arr[j - 1];
          --j;
        }
        arr[j] = tmp;
      }
    
      return arr;
    }

Test runner

Ready to run.

Testing in
TestOps/sec
Merge Sort
var arr = [918, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937];
mergeSort(arr);
ready
Quick Sort
var arr = [918, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937];
quickSort(arr);
ready
Bubble Sort
var arr = [918, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937];
bubbleSort(arr);
ready
Select Sort
var arr = [918, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937];
selectSort(arr);
ready
Insert Sort
var arr =[918, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937];
insertSort(arr);
ready
Array Sort
var arr = [918, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937, 3, 9355, 26, 48, 585, 74,51763, 36, 561, 2, 48, 8, 7,1, 3, 56, 2142, 4, 28, 7,1, 3, 5, 2, 54, 8, 7,1, 34, 5, 22, 43, 87, 7,1, 3, 5, 2, 94, 8, 7,16, 23, 5, 24, 4444, 8, 7,71, 3, 5,222, 4, 8, 57,313, 3, 5, 24, 43, 81, 67,15, 34, 5, 82, 44, 83, 7,1, 3, 55, 2, 4,128, 7,1, 3, 5, 2, 94, 87, 67,1, 39, 5, 26, 4665, 884, 78,1, 3, 935, 2, 4, 8, 7,1, 3, 58, 2, 4, 8, 47,1, 3, 56, 2, 455, 8, 7,1, 3, 54, 2, 4, 68, 7,1, 35, 5,52, 4, 89, 79,1,23, 5, 2, 4, 778, 7,681, 3, 51, 221, 94, 8, 3327,1, 653, 5, 2, 24, 8, 3937];
arr.sort(function(a, b) {
  return a - b;
});
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.