快速排序(递归排序)

/**
 * 快速排序
 * 思想:取中间值,分左右数组进行排序 进行递归
 * 步骤
 * 1.摘取数组中间值,并且为新变量
 * 2.准备俩个空数组,left 和 right
 * 3.循环当前数组,比较当前值是否大于中间值,大于存入右侧数组,否则存入左侧
 * 4.进行递归循环 
 * 5.每次进入该函数 比较递归的数组是否小于等于1 ,是停止循环
 */
function quark(arr){
    if(arr.length <= 1) return arr;
    let num = Math.floor(arr.length/2);
    let numVal = arr.splice(num,1)[0];
    let left = [], right = [];
    for(let i=0; i< arr.length; i++){
        if(arr[i] > numVal){
            right.push(arr[i])
        }else{
            left.push(arr[i])
        }
    }
    return quark(left).concat(numVal,quark(right))
}
console.log(quark(arr))
原文地址:https://www.cnblogs.com/zhaozhenghao/p/14268600.html