算法入门--快速排序

快速排序可谓是排序算法中最有名的算法了,虽然说名字叫快速但是平均时间复杂度达到了O(n * log n)只能说是较快吧,如果最坏情况下时间复杂度可以达到O(n ^ 2)

快速排序也是递归的最经典的一个用例

下面直接上代码吧:

function qsort(arr) {
    //基线条件,就是最后跳出递归的条件
    //通常都会返回0或1个值
    if (arr.length < 2) {
        return arr
    } 
    //递归条件
    else {
        let mid = arr[0]
        let low = []
        let high = []
        for (let i = 1; i<arr.length; i++) {
            if (arr[i] <= mid) {
                low.push(arr[i])
            } else {
                high.push(arr[i])
            }
        }
        return qsort(low).concat(mid).concat(qsort(high))
    }
}

 

posted @ 2018-03-08 14:15  张啊咩  阅读(181)  评论(0编辑  收藏  举报