1.算法步骤
快速排序的一般步骤如下:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
2.图解算法
(图片来自于《啊哈!算法》)
这里需要解释一下为什么每次交换的时候都需要右边的哨兵先走:最主要是相遇点的问题,算法的最后,是需要将相遇点与基准数相互交换的,因此这里必须要让相遇点小于基准数。而相遇点要么是左边哨兵先到相遇点,然后右边哨兵走过去相遇的,要么就是右边哨兵先到相遇点,左边哨兵走过去相遇的。
①在左边哨兵先走情况下:
这种情况下每一轮都是先左后右,如果左边的停了,该右边行动了,这说明左边的找到了比基准数大的数;如果右边的停了,左边的该