Skip to content

快速排序 Quick Sort

原理

快速排序(Quick Sort)是一种高效的排序算法,采用了分治法的思想来对数据进行排序。其核心理念是通过选择一个“基准点”(pivot),将数组分成两部分——较小的元素放在基准点的左侧,较大的元素放在右侧,然后对两部分分别递归地进行排序。以下是快速排序的基本步骤:

  1. 选择基准点:通常选择数组中的一个元素作为基准点(可以是第一个、最后一个或中间位置的元素)。
  2. 分区操作:根据基准点,将数组分成两部分。左侧的元素都小于等于基准点,右侧的元素都大于基准点。
  3. 递归排序:分别对左侧和右侧的子数组递归地进行快速排序。
  4. 合并结果:当子数组的大小为1或0时,不需要再排序,最终完成整个排序过程。

示例

有一组无序数组:

6241903

以6作为基准点,第一次遍历将数组分为两部分:

第一部分:

24103

第二部分:

9

将第一部分继续快速排序,以2为基准点,遍历将数组分为两部分:

第一·一部分:

10

第一·二部分:

43

将第一·一部分继续快速排序,以1为基准点,遍历将数组分为两部分:

第一·一·一部分:

0

第一·一·二部分:

第一·一部分快速排序的数组长度全部小于等于1,返回数组:

01

将第一·二部分继续快速排序,以4为基准点,遍历将数组分为两部分:

第一·二·一部分:

3

第一·二·二部分:

第一·二部分快速排序的数组长度全部小于等于1,返回数组:

34

第一部分快速排序完成,返回数组:

0134

此时第二部分数组长度为1,直接返回数组。

此时数组为:

0123469

排序完成。

实现

C++

可视化

数组长度
动画间隔
数组:
[]