javascript快速排序

递归法

这个比较简单,对一个数组取中间一位(要把它提出来,删掉),然后遍历剩余数组,比该值小的放左边,大的放右边。对分好的数组继续执行这个方法。

function jsQuickSort(array) {
    if (array.length <= 1) {
        return array;
    }
    const pivotIndex = Math.floor(array.length / 2);
    const pivot = array.splice(pivotIndex, 1)[0];  //从数组中取出我们的"基准"元素
    const left = [], right = [];
    array.forEach(item => {
        if (item < pivot) {  //left 存放比 pivot 小的元素
            left.push(item); 
        } else {  //right 存放大于或等于 pivot 的元素
            right.push(item);
        }
    });
    //至此,我们将数组分成了left和right两个部分
    return jsQuickSort(left).concat(pivot, jsQuickSort(right));  //分而治之
}

const arr = [98, 42, 25, 54, 15, 3, 25, 72, 41, 10, 121];
console.log(jsQuickSort(arr));  //输出:[ 3, 10, 15, 25, 25, 41, 42, 54, 72, 98, 121 ]

你可能感兴趣的:(js基础知识)