题解 | #快速排序#
快速排序
https://www.nowcoder.com/practice/38da660199d0400580ac3905c05f5bd6
const _quickSort = (array) => {
// 1. 判断 是[] 或者[x] 就直接返回
if (array.length === 0 || array.length === 1) return array;
// 2. 分别定义左数组,右数组,中间值。
let baseIndex = Math.floor(array.length / 2);
let base = array.splice(baseIndex, 1);
let left = [];
let right = [];
// 3. 循环当前数组,并通过中间值去判断左边值和右边的值分别放到左数组和右数组里面
// 3.1 值得注意的是因为我们定义中间值的时候是向下取整的就是1.9还是1,所以是当前位<= base
for (let i = 0; i < array.length; i++) {
if (array[i] <= base) {
left.push(array[i]);
} else {
right.push(array[i]);
}
}
4. 把左数组和中间值和右数组合并成一个新的数组,concat方法会返回一个新数组。
return _quickSort(left).concat(base, _quickSort(right));
};
#我的算法思考#