1、快速排序精髓
一、先从数列中取出一个数作为基准数
二、分区,将比这个数大的数全放到它的右边,小于或等于它的数全部放到它的右边
三、对左右区间重复步骤(二),直到各区间只有一个数为止
2、详解排序过程
假设一下数列
12 30 17 9 8 20 3
我们选取第一个数12为基准数,第一回合,从后往前找出一个比基准数12小的数,是3,所以我们将3和基准数进行对换,得:
3 30 17 9 8 20 12
接着,我们从前往后,找出第一个比基准数12 大的数,是30,将30与基准数交换,得:
3 12 17 9 8 20 30
继续从刚刚基准数交换之前的位置往前找第一个比12小的数,是8,所以与基准数交换,得:
3 8 17 9 12 20 30
继续从刚刚基准数交换之前的位置往后找第一个比12大的数,是17,所以与基准数交换,得:
3 8 12 9 17 20 30
继续从刚刚基准数交换之前的位置往前找第一个比12小的数,是9,所以与基准数交换,得:
3 8 9 12 17 20 30
这时,比基准数小的数都在基准数前面;比基准数大的数都在基准数后面,所以本轮快排结束,剩下的就是对基准数左右两边的数列在分别进行上述步骤,直到各个区间只有一个数为止。