哇,太简单了。
快排函数三步走,
第一步,选一个基准值,
第二步,比值小的放一个数组,比值大的放另一个数组。
第三步,递归调用快排函数,参数值为左数组和右数组,最后返回左右数组合并数组。
直接附上我六行的代码
function quickSort(arr) {
if(arr.length<=1) return arr
let item = arr[0]
arr.splice(0,1)
let left = arr.filter(value => {return value<item})
let right = arr.filter(value => {return value>item})
return quickSort(left).concat(item,quickSort(right))
}
如果数组值长度小于1,则直接返回。选个基准值,直接选第一个呗。
小的放left数组,大的放right数组。return 递归调用后的数组。
然后过了几月之后我发现还可以简写!
function quickSort(arr) {
if(arr.length<=1) return arr;
let item = arr[0];
arr.shift();
let left = arr.filter(value => (value<item))
let right = arr.filter(value => (value>item))
return [...quickSort(left),item,...quickSort(right)]
}
行数不变,很明显,逼格变高了。