快速排序
思路:对一组数据找到一个基准数,用这个基准数做参考,小于它的放右边(左边),大于它的放左边(右边),然后左右两边同样实现这样的排序,直到都符合规则
直接上原书的图《坐在马桶上学算法》
算法难点:
- 使用左右两边的数据
- 以左边的数作为基准数
- 先从右边开始找比基准数小的点(从大到小排序)
- 当右边找到比基准数小的点,左边找到比基准数大的点时,交换两个位置的值,然后继续
- 当左右两点位置相等时,将该位置点与左边 1 位置交换
- 左右两边分别重复上面的步骤,直到一边没有数据只剩下一个结束这样的循环
这是具体的一个交换流程
|
|
运行结果: