Skip to content

Latest commit

 

History

History
32 lines (26 loc) · 611 Bytes

归并排序.md

File metadata and controls

32 lines (26 loc) · 611 Bytes

归并排序

原理

待更新


代码如下:

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))
}