校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 算法 > 高级排序(快排、堆排等)
题目

快速排序的基本思路是什么?

解答

【解析】

第一步:选取一个数作为基准(理论上可以随便选取);
第二步:分区,比基准值小的放左边,大的放右边,基准值放在两个分区之间;
第三步:进行左边分区递归,以及右边分区递归

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)); // 连接左数组、基数组和右数组
};
C 0条回复 评论

帖子还没人回复快来抢沙发