SOURCE

function mergeSort (arr) {
  let len = arr.length
  if (len < 2) {
    return arr
  }
  let mid = Math.floor(len / 2)
  let left = arr.slice(0, mid)
  let right = arr.slice(mid)
  
  return merge(mergeSort(left), mergeSort(right))
}

function merge (left, right) {
  let result = []
	while (left.length && right.length) {
    if (left[0] <= right[0]) {
    	result.push(left.shift())  
    } else {
      result.push(right.shift())
    }
  }
  
  while (left.length) {
		result.push(left.shift())
  }
  
  while (right.length) {
    result.push(right.shift())
  }
  
  return result
}

console.log(mergeSort([9,5,12,24,87,8,5,1])) // 1,5,5,8,9,12,24,87
console 命令行工具 X clear

                    
>
console