SOURCE

let arr = [1,2,3,1,2,5,3,9,55,43];
console.log(quickSort(arr));
/**
 * @description 将数组内的数值进行排序
 * @param elements 要排序的数组
 * @return 返回排序后的数组
 * */ 
function quickSort(elements){
    // 当数组为空或只有一个属性值则直接返回该数组
    if(elements.length<=1){
        return elements;
    }
    // 获取中间值的索引-Math.floor是去小于等于此数的最大正整数
    const pivotIndex = Math.floor(elements.length/2);
    // 获取中间值-利用elements.splice将对应索引的值获取到,返回的是一个数组
    const pivot = elements.splice(pivotIndex,1)[0];
    // 小于中间值的将数值放入left
    const left = [];
    // 大于或等于中间值的将数组放入right
    const right = [];
    // 遍历要排序的数组
    for(let i=0;i<elements.length;i++){
        // 当小于中间值时
        if(elements[i]<pivot){
            // 将其放入left
            left.push(elements[i]);
        }else{
            // 否则放入right
            right.push(elements[i]);
        }
    }
    // 继续递归进行,最后获取到升序排序后的数组
    // concat方法是连接两个或者多个数组,该方法不会改变现有的数组,而仅仅返回被链接数组的一个副本
    return quickSort(left).concat([pivot],quickSort(right));
}
console 命令行工具 X clear

                    
>
console