一、核心思想:
定位中间值和左右数组,将小于等于中间值的置于左数组,否则放在右数组,递归执行上述操作,出口为数组的长度为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
//]