2018-09-30快速排序算法

将一个数组中的数据进行从小到大的排序


2018-09-30快速排序算法_第1张图片
快速排序

基本思想:通过 一次排序 将数组分割成相互独立的左右两部分,左边部分的所有数据都比右边部分所有的数据要小,然后左右两边分别递归执行此方法,得到有序序列。

1、找基准数(一般是数组的第一个元素)

2、定义两个变量

    (1)left,要排序数组的起始下标,i

    (2)right,要排序数组的终点下标,j

3、我们的目的是使左边的数都小于基准数,右边的数都大于基准数

        (1)从右边开始向左找(如果基准数在右边就先从左边开始),依次与基准数作比较,如果大于基准数,则 j--,遇到小于基准数的则停下;

         (2)接下来从左边开始向右找,如果小于基准数,则 i++,遇到大于基准数的则停下来;

         此时,array[ j ]是 右边小于基准数的值,array[ i ]是左边大于基准数的值

         (3)然后交换array[ i ]和array[ j ],此时完成第一次交换。

        依次执行上述3个操作,直到 i == j(碰头)

        此时完成了之前所说的“一次排序”,将数组分成了左右两个相互独立的部分

        然后,分别对左右两部分递归执行此方法 ,即可得到有序数列。

2018-09-30快速排序算法_第2张图片

参考资料

你可能感兴趣的:(2018-09-30快速排序算法)