前端手写代码面试题
目录

编写一个函数,实现快速排序

· 约 2 分钟读完 · 第 103 / 125 章

推荐答案

本题详细解读

快速排序的基本思想

快速排序是一种分治算法,它通过选择一个“基准”(pivot)元素,将数组分为两部分:一部分比基准小,另一部分比基准大。然后递归地对这两部分进行排序,最终将整个数组排序。

代码解析

  1. 基准条件:如果数组的长度小于等于1,那么它已经是有序的,直接返回。
  2. 选择基准:我们选择数组中间的元素作为基准(pivot)。
  3. 分割数组:
    • left:包含所有小于基准的元素。
    • middle:包含所有等于基准的元素。
    • right:包含所有大于基准的元素。
  4. 递归排序:对left和right部分递归调用quickSort,然后将结果拼接起来。

时间复杂度

  • 平均情况:O(n log n)
  • 最坏情况:O(n^2)(当每次选择的基准都是最小或最大元素时)

空间复杂度

  • O(n)(由于递归调用栈和创建新数组)

适用场景

快速排序在大多数情况下表现良好,尤其适用于大规模数据集的排序。然而,在最坏情况下,它的性能会下降,因此在实际应用中可能需要结合其他优化策略(如随机选择基准)。