SOURCE

function quickSortShell(arr) {
    function quickSort(left, right) {
        if (left >= right) return
        // 以第一个数为基准
        let temp = arr[left], 
            i = left,
            j = right

        while (i !== j) {
            // 需要先从右边开始
            while (arr[j] >= temp && i < j) j--;
            while (arr[i] <= temp && i < j) i++;
            if (i < j) {
                [arr[i], arr[j]] = [arr[j], arr[i]]
            } 
        }
        [arr[left], arr[i]] = [arr[i], arr[left]]

        quickSort(left, i)
        quickSort(i+1, right)
    }
    
    quickSort(0, arr.length -1)
    console.log(arr)
    return arr
}

quickSortShell([1, 2, 4 ,1])
console 命令行工具 X clear

                    
>
console