SOURCE

//快速排序实现
//1、位置交换实现
function swap(arr,i,j){
    let temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
    return arr; 
}
//2、获取主元
function medion(arr,left,right){
    let mid = Math.floor((left+right)/2);
    if(arr[left] > arr[right]){
        arr = swap(arr,left,right);
    }
    if(arr[mid] > arr[right]){
        arr = swap(arr,mid,right);
    }
    if(arr[left] > arr[mid]){
        arr = swap(arr,left,mid);
    }
    arr = swap(arr,mid,right-1);
    return [arr,arr[right-1]];
}

//进行快排
function quickSort(arr){
    return quickSortRec(arr,0,arr.length-1) ;
}
function quickSortRec(arr,left,right){
    if(left >= right) return arr;
    //获取主元值:
    arr = medion(arr,left,right)[0];
    let pivot = medion(arr,left,right)[1];
    //进行位置参数定位
    let i = left;
    let j = right-1;
    while(i < j){
        while(arr[++i] < pivot){}
        while(arr[--j] > pivot){}
        if(i<j){
            arr = swap(arr,i,j);
        }
    }
    //主元位置返回
    arr = swap(arr,i,right-1);
    arr = quickSortRec(arr,left,i);
    arr = quickSortRec(arr,i+1,right);
    return arr;
}

let arr=[66,88,12,87,100,5,566,23,2,90,56,35,58,14,75,3,41];
console.log(quickSort(arr));
console 命令行工具 X clear

                    
>
console