/** * 快速排序 * 思想:取中间值,分左右数组进行排序 进行递归 * 步骤 * 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))