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

基本思想:通过 一次排序 将数组分割成相互独立的左右两部分,左边部分的所有数据都比右边部分所有的数据要小,然后左右两边分别递归执行此方法,得到有序序列。
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(碰头)
此时完成了之前所说的“一次排序”,将数组分成了左右两个相互独立的部分
然后,分别对左右两部分递归执行此方法 ,即可得到有序数列。

网友评论