快速排序

45 阅读1分钟

排序数组:arr = [5, 4, 6, 3, 8, 1, 7, 2, 10, 9]
描述:定义两个数组,一个left数组,一个right。从arr中取一个参考值referencevalue,遍历arr剩下的每一项,比referencevalue小的放在left数组中,比referencevalue大的放在right数组中,最后将left数组,当前参考值和right数组进行合并。再将left和right数组进行同样的递归操作,直到传入的数组值只留下一项为止停止递归。

const arr = [5, 4, 6, 3, 8, 1, 7, 2, 10, 9]
function sort(arr) {
    if(arr.length<2) return arr
    let left = []
    let right = []
    let referencevalue = arr[0]//a参考值
    for (let i = 1; i < arr.length; i++) {
        let ele = arr[i]
        //小的放left数组
        if (ele < referencevalue) {
            left.push(ele)
        } else {//大的放right数组
            right.push(ele)
        }
    }
    // 合并当前值
    return sort(left).concat(referencevalue, sort(right))
}
console.log(sort(arr))