Skip to content

归并排序

js
function fn(nums){
    const len = nums.length
    if(len === 1) return nums
    const mid = Math.floor(len / 2)
    let left = nums.slice(0,mid), right = nums.slice(mid)
    left = fn(left)
    right = fn(right)
    let res = []
    while (left.length && right.length){
        if(left[0] < right[0]){
            res.push(left.shift())
        } else {
            res.push(right.shift())
        }
    }
    res.push(...[...left,...right])
    return res
}

console.log(fn([3,2,1,0,5]))
function fn(nums){
    const len = nums.length
    if(len === 1) return nums
    const mid = Math.floor(len / 2)
    let left = nums.slice(0,mid), right = nums.slice(mid)
    left = fn(left)
    right = fn(right)
    let res = []
    while (left.length && right.length){
        if(left[0] < right[0]){
            res.push(left.shift())
        } else {
            res.push(right.shift())
        }
    }
    res.push(...[...left,...right])
    return res
}

console.log(fn([3,2,1,0,5]))