算法系列:4. 快速排序

/**
 * @Desc 快速排序 
 * 分区:在数组中任意选择一个 ‘基准’,所有比基准值小的放到基准值前边,比基准值大的放在基准值后边
 *   递归的对基准前后的数组 进行 “分区”
 */
Array.prototype.quickSort = function() {
    
    
    const rec = function(arr) {
    
    
        if (arr.length <= 1) {
    
    
            return arr;
        }

        const left = [];
        const right = [];
        const curr = arr[0];

        for (let i=1;i<arr.length;i++) {
    
    
            if (arr[i] > curr) {
    
    
                right.push(arr[i]);
            } else {
    
    
                left.push(arr[i]);
            }
        }

        return [...rec(left), curr, ...rec(right)];
    }

    let res = rec(this);
    res.forEach((n,i) => this[i] = n);
}

猜你喜欢

转载自blog.csdn.net/RedaTao/article/details/120534620