快速排序入门小例子,轻松学会核心步骤


快速排序是一种非常高效的排序算法,其核心思想是分治法。下面通过一个小例子来轻松学会快速排序的核心步骤。

假设我们有一个无序数组 `[4, 1, 3, 1, 6]`,我们要用快速排序将其排序。

第一步:选择基准值(pivot)

通常选择数组的最后一个元素作为基准值,这里选择 `6`。

第二步:分区(partition)

将数组分成两部分,使得左边的所有元素都小于基准值,右边的所有元素都大于基准值。

- 初始化两个指针 `i` 和 `j`,`i` 从左边开始,`j` 从右边开始。

- 移动 `i`,直到找到一个大于等于基准值的元素。

- 移动 `j`,直到找到一个小于等于基准值的元素。

- 交换 `i` 和 `j` 指向的元素。

- 重复上述过程,直到 `i` 和 `j` 相遇。

在这个例子中,分区后数组变为 `[1, 1, 3, 4, 6]`,基准值 `6` 放在了正确的位置。

第三步:递归排序子数组

对基准值左边的子数组 `[1, 1, 3]` 和右边的子数组 `[4]` 递归进行快速排序。

- 对 `[1, 1, 3]`,选择基准值 `3`,分区后变为 `[1, 1, 3]`,基准值 `3` 放在正确位置。

- 对 `[1, 1]`,因为只有一个元素或为空,直接返回。

最终,整个数组变为 `[1, 1, 3, 4, 6]`,排序完成。

通过这个例子,我们可以看到快速排序的核心步骤:选择基准值、分区、递归排序子数组。掌握这些步骤,就能轻松理解和实现快速排序。