解答
【解析】
第一步:选取一个数作为基准(理论上可以随便选取);
第二步:分区,比基准值小的放左边,大的放右边,基准值放在两个分区之间;
第三步:进行左边分区递归,以及右边分区递归
const quicksort = arr = > {
const pivotIndex = Math.floor(arr.length / 2); // 选取基准位置,尽量考虑随机性
const pivot = arr.splice(pivotIndex, 1)[0];
const left = [];
const right = [];
arr.forEach((item, idx) => {
if (arr[idx] < pivot) {
left.push(arr[idx]);
} else {
right.push(arr[idx]);
}
});
return quickSort(left).concat([pivot], quickSort(right)); // 连接左数组、基数组和右数组
};
帖子还没人回复快来抢沙发