MergeSort

Merge sort

by sramnan

JavaScript

function merge(left, right) {
  var result = [];
  var leftIndex = 0;
  var rightIndex = 0;
  while (leftIndex < left.length && rightIndex < right.length) {
    if (left[leftIndex] < right[rightIndex]) {
      result.push(left[leftIndex++]);
     
    } else {
      result.push(right[rightIndex++]);
    }
  }

  return result.concat(left.slice(leftIndex)).concat(right.slice(rightIndex));
}

function mergeSort(items) {

  if (items.length < 2) {
    return items;
  }

  var middle = Math.floor(items.length / 2),
    left = items.slice(0, middle),
    right = items.slice(middle),
    params = merge(mergeSort(left), mergeSort(right));
  console.log(params);

 
  return params;
}
var arr = [-3,-2,0,10,2,3,1];
console.log(mergeSort(arr));