快速排序
一、算法原理
每次排序时选取一个基准,将小于基准的数全部放到基准点的左边,将大于或等于基准的数全部放到基准的右边。
完成后,得到了两个 整体 上有序的子数组,再递归继续,直至所有元素完成排序。
算法模拟 假设对 6 , 1 , 2 , 7 , 9 , 3 , 4 , 5 , 10 , 8 这 10 个数进行排序:
本次模拟的基准是以数组的第一个元素为基准的。
从后向前扫描, i 去向右找第一个大于 基准 6 (这个 6 是选择的第一元素,代码中我们将选择中间位置的元素,道理都是一样的) 的数字, j 向左查找第一个小于基准 6 数字:

找到 7 和 5 ,交换 7 和 5

继续前进,找到 9 和 4 ,然后交换

i>= j ,交换 6 和 3

交换之后: 3 , 1 , 2 , 5 , 4 , 6 , 9 , 7 , 10 , 8 , 一趟排序结束。
以基准值 6 划分的两堆数据,左手边都比 6 小,右手边都比 6 大, 6 在中间,然后再用同样的办法递归处理左右两边即可,此时, 6 就不参与了。
二、实现代码
阿里云工作强度 731人发布

