一、核心思想:
定位中间值和左右数组,将小于等于中间值的置于左数组,否则放在右数组,递归执行上述操作,出口为数组的长度为1或者空,返回数组本身。
二、代码实现:
let arr = [2, 3, 5, 7, 9, 1, 0, 6, 8, 4];
/**
* 快速排序
* @param {Array} arr 传入数组
* @return {Array} 返回快排数组结果
*/
function quickSort(arr) {
if (arr.length == 0 || arr.length == 1) {
return arr;
}
let mid = Math.floor(arr.length / 2);
let item = arr.splice(mid, 1);
let leftArray = [], rightArray = [];
arr.forEach(element => {
if (element<=item) {
leftArray.push(element)
} else {
rightArray.push(element)
}
});
return quickSort(leftArray).concat(item).concat(quickSort(rightArray));
}
console.log(quickSort(arr));
//[
// 0, 1, 2, 3, 4,
// 5, 6, 7, 8, 9
//]