const numbers = [99, 44, 6, 2, 1, 5, 63, 87, 283, 4, 0];
function mergeSort (array) {
if (array.length === 1) {
return array
}
var midpoint = Math.ceil(array.length/2);
var left = array.splice(0,midpoint);
var right = array;
return merge(
mergeSort(left),
mergeSort(right)
)
}
function merge(left, right){
if(right === null) {
return left;
}
else {
var i = left.length;
var j = right.length;
var mergedArr = [];
while(i > 0 && j > 0) {
if(left[0] < right[0]) {
mergedArr.push(left.shift());
i--;
}
else {
mergedArr.push(right.shift());
j--;
}
}
if(i > j) {
mergedArr.push(...left);
}
else {
mergedArr.push(...right);
}
return mergedArr;
}
}
const answer = mergeSort(numbers);
console.log(answer);