快速排序的思路与逻辑图解
const arr = [4,1,5,6,2,3,9,7,1]
function quickSorrt(arr){
if(arr == null || arr.length == 0 ) return []; // 递归出口
let letArr = []; // 比比较值小的存进此数组
let rightArr = []; // 比比对值大的存进此数组
let leader = arr[0]; // 默认的比较值
for(let i = 1 ; i < arr.length ; i++){
if(arr[i] < leader) letArr.push(arr[i]) // 进行比较
else rightArr.push(arr[i])
}
letArr = quickSorrt(letArr) //递归
rightArr = quickSorrt(rightArr)// 递归
letArr.push(leader) // 将比较值添加进数组 默认比较值是不会对自己进行比较的
return letArr.concat(rightArr) // 将 比比较值小的数组 + 比较值 + 比比较值大的数组
}
console.log(quickSorrt(arr))