原理
待更新
代码如下:
let mergeArray = function (left, right) {
let result = []
while (left.length > 0 && right.length > 0) {
if (left[0] > right[0]) {
result.push(right.shift())
} else {
result.push(left.shift())
}
}
return result.concat(left, right)
}
let mergeSort = function(arr){
let len = arr.length
if(len <= 1) return arr
let mid = Math.floor(len / 2)
let left = arr.slice(0, mid)
let right = arr.slice(mid + 1)
return mergeArray(mergeSort(left), mergeSort(right))
}