数组经典排序算法之快速排序

100 阅读1分钟

快速排序

快排无疑是最重要,最常考的算法题,也是应该花时间琢磨的一道排序题

2019060415201822.gif

快排步骤 1,取数组随机一个元素,一般取中间 称为middle 2,建立两个空数组right[]left[],for循环把比middle小的数组放在right,大的放在left 3,再利用递归将right,left数组按照上面方法进行排序,再合并

const arr=[3,5,6,8,50,4,33,22]
    const fn = (arr)=>{
        if(arr.length<=1) return arr
        
        let middle = arr[0]
        let right=[]
        let left = []
        for(let i = 0;i<arr.length;i++){
            if(arr[i]<middle) right.push(arr[i])
            if(arr[i]>middle) left.push(arr[i])
        }
        
        return ([...fn(right),middle,...fn(left)])
    }

    console.log(fn(arr))