快速排序在最优的情况下是能够做到O(nlogn)的状态,但是最坏情况下也是会达到O(n2),所以快速排序并不是所有情况下都是最优的解决方案。
主要的流程是这样的:
1、选择一个基准数字,作为判断依据,可以选择任意一个作为基准数,但是一般情况下会选择使用最后一个数字作为基准数。
2、根据基准数,遍历所有的值,判断和基准数的大小关系,如果是大于的全部放到右边,小于的话放到左边,这样的话,就会形成,以基准数为中心,两边分为大于基准数和小于基准数的两堆数组
3、但是分好的两堆数字还不是有序的,所以需要在剩下的两堆中进行继续这个流程,知道最后这个分组的堆的数字只有两个。整个排序就完成了。所以这里会有一个递归的过程,将分开的两堆继续执行这个步骤来排序。