- 最近又看到了快速排序的题目,在写代码的时候,又想起了这个知识点之前不太清楚,查了查资料搞清楚了
- 快速排序我们每次递归要达成的效果是在基准数左侧的数都比基准数小,在基准数右侧的数都比基准数大
- 那我们再来看,左右指针是如何运动的:左指针向右运动,直到碰见比基准数大的数停下,右指针向左运动,直到碰见比基准数小的数停下
- 问题就出现在这里,我们最后是要把相遇位置处的数和基准位置处的数字相交换,而我们一直都把第一个数字作为我们的基准数(也就是该区域的最左侧),所以我们要保证交换来的数字比基准数要小
- 那么只有先进行右指针的运动,才可以保证在相遇处的数字小于基准数
如果哪里有问题,请大家指出来,谢谢!