一文详解快速排序到底是怎么排的

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

      这时,比基准数小的数都在基准数前面;比基准数大的数都在基准数后面,所以本轮快排结束,剩下的就是对基准数左右两边的数列在分别进行上述步骤,直到各个区间只有一个数为止。

猜你喜欢

转载自blog.csdn.net/su_bao/article/details/80916298