Nodejs Array Merge Sort mergeSort(arr)

Here you can find the source of mergeSort(arr)

Method Source Code

var mergeSort = function (arr) {
    var n = parseInt(arr.length/2);
    if(n < 1){
        return arr;
    }else{/*from   w w  w . ja v  a2  s.  c o m*/
        var arr1 = mergeSort(arr.slice(0, n));
        var arr2 = mergeSort(arr.slice(n));
    }
    var a = [];
    var i = 0, j = 0;
    while(i<arr1.length && j<arr2.length){
        if(arr1[i]<arr2[j]){
            a.push(arr1[i]);
            i++;
        }else{
            a.push(arr2[j]);
            j++;
        }
    }
    a = a.concat(arr1.slice(i));
    a = a.concat(arr2.slice(j));
    return a;
}

arr = [3,8,7,4,1,9,0,2,5,6];
var b = mergeSort(arr);
//arr.shellSort();
console.log(b);

Related

  1. mergesort (arr, lo, hi)
    'use strict';
    Array.prototype.swap = function (i, j) {
      const temp = this[i];
      this[i] = this[j];
      this[j] = temp;
    function mergesort (arr, lo, hi) {
      function partition (lo, hi) {
        if (lo >= hi) return;
    ...
    
  2. mergesort(A)
    function merge(left, right) {
      var result = [];
      while(left.length > 0 || right.length > 0) {
        if(left.length > 0 && right.length > 0) {
          if(left[0] <= right[0]) {
            result.push(left.shift());
          } else {
            result.push(right.shift());
        } else if(left.length > 0) {
          result.push(left.shift());
        } else if(right.length > 0) {
          result.push(right.shift());
      return result;
    function mergesort(A) {
      if(A.length < 2) {
        return A;
      var middle = Math.ceil(A.length / 2);
      var left = A.splice(0, middle);
      var right = A;
      left = mergesort(left);
      right = mergesort(right);
      return merge(left, right);
    Array.prototype.mergeSort = function() {
      return mergesort(this);
    
  3. mergesort(lst)
    var arr = [2, 4, 6, 1, 3, 5, 8, 7];
    var mergesort = function (lst) {
        if (lst.length === 1) return lst;
        var L = lst.slice(0, lst.length / 2),
            R = lst.slice(lst.length / 2, lst.length);
        var left = mergesort(L),
            right = mergesort(R);
        return merge(left, right);
        function merge(left, right) {
    ...
    
  4. mergeSort(array)
    function mergeSort(array) {
      var merge = function (left, right) {
        var total = []
        while (left.length && right.length)
          total.push(left[0] <= right[0] ? left.shift() : right.shift())
        return total.concat(left.concat(right));
      var length = array.length;
      if (length < 2) return array
    ...