Merge Sort
mergeSort([5,4,3,2,1]) // [1,2,3,4,5]function mergeSort(arr){
if(arr.length <= 1) return arr;
const mid = Math.floor(arr.length / 2);
const arrL = mergeSort(arr.slice(0, mid));
const arrR = mergeSort(arr.slice(mid));
return merge(arrL, arrR);
}
function merge(arrL, arrR){
const results = [];
let i = 0;
let j = 0;
while(i < arrL.length && j < arrR.length){
if(arrL[i] < arrR[j]){
results.push(arrL[i]);
i++
} else {
results.push(arrR[i]);
j++
}
}
while(i < arrL.length){
results.push(arrL[i]);
i++
}
while(j < arrR.length){
results.push(arrR[j]);
j++
}
return results;
}Explanation
Notes
Last updated