function merge(left, right) {
let tmp = [];
while (left.length > 0 && right.length > 0) {
if (left[0] < right[0]) tmp.push(left.shift());
else tmp.push(right.shift());
}
return tmp.concat(left, right);
}
function mergeSort(arr) {
if (arr.length <= 1) return arr;
else {
let mid = parseInt(arr.length / 2);
let left = arr.slice(0, mid);
let right = arr.slice(mid);
return merge(mergeSort(left), mergeSort(right));
}
}
mergeSort([3, 1, 2, 4, 3, 2, 5, 3, 8, 9]);