快速排序的基本思想:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程递归进行,以达到有序序列。
快速排序的每一轮处理其实就是将一轮的基准数归位。
时间复杂度:O($N\log{N}$)。
空间复杂度:O($\log{N}$) ~ O($N$)。(递归调用,栈空间)
快速排序是不稳定的。
partition函数用来解决这样一个问题:给定一个数组data[]和数组中任意一个元素a,重排数组使得a左边都小于它,右边都不小于它。
|
|