快速排序体现的是一种分治法的思想。这里用一个例子来说明,有一个数组,6 1 2 7 9 3 4 5 10 8, 将这10个数进行排序。
第一步,先选一个基准数,这里为了方便,我们就选择第一个数6,我们需要做的就是找到一个位置k,使得k一边的数字全都小于这个基准,另一边的数字都大于这个基准。类似这样,3 1 2 5 4 6 9 7 10 8。
方法很简单,分别从两侧开始验证,start = 0, end = 9。end一侧的指针先移动,找比基准小的数。移动到5,start一侧的指针再移动,找到比基准大的数7.交换。
end一侧的指针接着移动,移动到4,start一侧的指针移动到9.交换。两边的指针都移动到3.相遇,于是停止移动。交换现在指针所指的元素和基准元素3和6。
现在的数组是,3 1 2 5 4 6 9 7 10 8。