排序算法——快速排序
快排是一个递归算法,思想是从数组中选一个参照,剩余数组中小于参照的添加到一个新数组,大于的添加到另一个新数组,然后再对这两个新数组进行上面的步骤。
感觉之前文章的博主对快排的解释有点复杂,所以就不用它的动图了,这里图里面的参照就是中间那条横线,应该是所在数组的平均值。
其实参照不唯一,可以取平均值,也可以是数组中任意一个数值,这里我们就取第一个数值作为参照:
js代码:
function quickSort(data) {
// 递归出口,当数组个数为0或者1
if (data.length <= 1) {
return data;
}
const flag = data[0];
const leftArr = [];
const rightArr = [];
for (let i = 1; i < data.length; i++) {
if (data[i] < flag) {
leftArr.push(data[i])
} else {
rightArr.push(data[i])
}
}
// 数组的concat方法也一样
return [...arguments.callee(leftArr), flag, ...arguments.callee(rightArr)];
}
觉得作者写得不错?不妨轻击下方按钮~