快速排序特点
特点:快,效率高
适用场景:适合数据过大且杂乱无章
快速排序思路
选取个分割点,通过一次排序将整个无序列表分为两个部分,其中一个部分的数据比另一个部分包含的数值小
实现思路举例
步骤1、选择一个分割点(通常选择第一个)——>49
步骤2、大于49放右侧,小于49放左侧,排序后——13 42 6 49 56 76 91
步骤3、第一个小于部分 13 42 6进行以13为分割点的排序——> 6 13 42
步骤4、第二个大于部分56 76 91以56为分割点排序 ——>56 79 91
步骤5、连接两个部分和中间点
代码实现
function quickSort (arr) {
const rec = (arr) => {
if (arr.length <= 1) { return arr; }
const left = [];
const right = [];
const mid = arr[0]; // 基准元素
for (let i = 1; i < arr.length; i++){
if (arr[i] < mid) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return [...rec(left), mid, ...rec(right)]
}
return res(arr)
};