merge sort
function merge_sort(arr) { if (arr.length == 1) { return arr; } var middleIndex = Math.floor(arr.length / 2); var firstHalf = arr.slice(0, middleIndex); var secondHalf = arr.slice(middleIndex); return merge(merge_sort(firstHalf), merge_sort(secondHalf)); }