力扣- 最下的k个数【快排】

90 阅读1分钟

题链接:leetcode-cn.com/problems/zu…

题解:效率不高,复习一下快排解法

// 快速排序
function sortArr(arr) {
    if (arr.length <= 1) {
        return arr
    }
    let min = []
    let max = []
    // 每次从中间分区
    const len = Math.floor(arr.length / 2)
    // 基准值
     const  p = arr.splice(len, 1)[0]
    // 排序时候,小值放到min,大的放max
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] > p){
           max.push(arr[i])
        }else {
            min.push(arr[i])
        }
    }
    return sortArr(min).concat(p, sortArr(max))
}


console.dir(sortArr([3,5,6,7,8,83,3,4, 1]).splice(0, 3))