SOURCE

/**
 参数说明
 target 需要排序的目标数组
 l  需要排序的起始项
 r  需要排序的终止项
 */
function quickSort(target, l, r) {
    if (l >= r) return

    let i = l; let j = r; let key = target[l];//选择第一个数为key

    while (i < j) {

        while (i < j && target[j] >= key)//从右向左找第一个小于key的值
            j--;
        if (i < j) {
            target[i] = target[j];
            i++;
        }

        while (i < j && target[i] < key)//从左向右找第一个大于key的值
            i++;

        if (i < j) {
            target[j] = target[i];
            j--;
        }
    }
    //i == j
    target[i] = key;
    quickSort(target, l, i - 1);//递归调用
    quickSort(target, i + 1, r);//递归调用
    return target
}

console.log(quickSort([23, 32, 5, 72, 12, 1, 2], 0, 5))
console.log(quickSort([23, 32, 5, 72, 12, 1], 4, 5))
console 命令行工具 X clear

                    
>
console