Merge Sort

by Trever Shick

HTML

<script src="https://rawgit.com/trevershick/6d9364085a1e566b2e18/raw/console.js"></script>

JavaScript

// merge sort
var unsorted = [0,9,3,5,6,7,4,2,1,5,7,0];



function sort(unsorted) {
	if (unsorted.length <= 1) {
	  return unsorted;
  }

  var merge = function (l,r) {
    if (l.length == 0) { return r; }
    if (r.length == 0) { return l;  }
    return (l[0] <= r[0])
      ? [l[0]].concat(merge(l.slice(1), r))
      : [r[0]].concat(merge(l, r.slice(1)));
	};

	return merge(
  	sort(unsorted.slice(0, unsorted.length / 2)),
		sort(unsorted.slice(unsorted.length / 2)));
}

console.log(sort(unsorted));
console.log(sort([3]));