有了前面的基础,暗示着没有看我的冒泡排序、选择排序、插入排序、希尔排序的小伙伴快去花几分钟的时间把前面比较基础的排序算法先搞清楚,再来看这篇快速排序算法吧~
然后你就看我操作就完事!
大概流程
- 还是拿第一个元素当作参照物
- 定义一个哨兵i和哨兵j
- 哨兵j从数组最后面的一个元素开始进行比较,哨兵i从数组的第二个元素进行比较
- 哨兵j先移动,遇到第一个比参照物小的元素停下来
- 哨兵i遇到第一个比参照物大的元素停下来
- 交换i和j对应数组下标的两个数据
- 当i和j相遇的时候把此时的数组元素和第一个也就是我们刚开始设置的参照物进行交换
- 递归调用,因为把参照物换到两个哨兵相遇的数组位置以后,左边的都比参照物小,右边的都比参照物小
- 两边的数组继续递归调用这个函数就可以了
图片演示
代码演示:
测试数据:
结果:
以上就是快速排序的过程,有什么错误的地方或者有哪里可以改进的,小伙伴们在评论区留言~