D&C算法
在讲快排之前首先需要先介绍一下D&C算法。D&C(divide and conquer),分而治之,一种著名的递归式问题解决方法。下面从几个例子来了解一下:
- 假设你是农场主,有一小块(1680m*640m)土地。你要将这块地均匀地分成方块,且分出的方块要尽可能大。如何将一块地均匀地分成方块,并确保分出的方块是最大的呢?使用D&C策略!D&C算法是递归的。使用D&C解决问题的过程包括两个步骤:
(1)找出基线条件,这种条件必须尽可能简单。
(2)不断将问题分解(或者说缩小规模),直到符合基线条件。
快速排序
快速排序也使用了D&C。它的实现原理:以一个为基准,将数组分为两部分,再依次将拆分的部分再进行取基准、分组,以此类推。