'use strict';
const merge = (left, right) => {
const result = [];
let il = 0;
let ir = 0;
while (il < left.length && ir < right.length) {
if (left[il] < right[ir]) {
result.push(left[il++]);
} else {
result.push(right[ir++]);
}
}
return result.concat(left.slice(il)).concat(right.slice(ir));
}
const mergeSort = (arr) => {
if (arr.length < 2) {
return arr;
}
const middle = parseInt(arr.length / 2) | 0;
const left = arr.slice(0, middle);
const right = arr.slice(middle);
return merge(mergeSort(left), mergeSort(right));
}
const arr = [45, -8, 15, 3, 0, -1, 22];
const sortedArr = mergeSort(arr, 0, arr.length-1);
console.log('sortedArr', sortedArr);