function merge(left, right) {
let arr = [];
while (left.length && right.length) {
if (left[0] < right [0]) {
arr.push(left.shift())
} else {
arr.push(right.shift())
}
}
return [...arr,...left,...right];
}
function mergeSort(arr, halflength = arr.length / 2) {
if (arr.length < 2) {
return arr
}
const left = arr.splice(0, halflength);
return merge(mergeSort(left), mergeSort(arr))
}
let arr = [10, 8, 5, 4, 0, 3, 6, 2, 7, 1, 9];
console.log(mergeSort(arr));
/*
run:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
*/