Javascript Merge Sort

by stevenkaspar

JavaScript

let mergeSort = arr => {
	if(arr.length < 2) return arr
  let split_index = Math.floor(arr.length / 2)
  let left = arr.splice(0, split_index), right = arr.splice(0, arr.length)
  
  mergeSort(left)
  mergeSort(right)
  
  return merge(arr, left, right)
}

let merge = (arr, left, right) => {
 
  let li = 0, ri = 0
  while(li < left.length && ri < right.length){
		if(left[li] <= right[ri]){
    	arr.push(left[li++])
    }
    else {
    	arr.push(right[ri++])
    }
  }
  while(li < left.length){
  	arr.push(left[li++])
  }
  while(ri < right.length){
  	arr.push(right[ri++])
  }
  return arr
}

document.write(mergeSort([3,2,5,1,4,7,8,4,9]))