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]