Merge Sort in Javascript
following is the code for merge sort
function mergeSort(arr){
if(arr.length<2){
return arr
}
let mid = Math.floor(arr.length/2)
let leftArr=arr.slice(0, mid)
let rightArr =arr.slice(mid)
return merge(mergeSort(leftArr), mergeSort(rightArr))
}
function merge(leftArr, rightArr){
let sortedArr =[]
while(leftArr.length && rightArr.length){
if(leftArr[0]< rightArr[0]){
sortedArr.push(leftArr.shift())
}else{
sortedArr.push(rightArr.shift())
}
}
return [...sortedArr, ...leftArr, ...rightArr]
}
const arr = [34,5,3,-9, 87, 0,1]
console.log(mergeSort(arr)) // [-9, 0, 1, 3, 5, 34, 87]