前言
最近在学数据结构与算法,在此做一下记录,方便时不时复习一下。如果有什么做得不对的地方,恳请指出,万分感谢。
简述
快速排序算法是对冒泡排序的一种改进,也是采用分治法的一个典型应用。
算法思想是先任意选取一个数据(比如数组中的第一个数)作为关键数据,把这个选取的数成为基准数(Pivot),然后将数组里面比它小的数全部放在它前面,比它大的数都放在它后面,这个过程结束之后为一次快速排序,也被称为一次分区排序。通过一趟快速排序将要排序的数据分割成为独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后对这两部分再分别选取一个基准数,再完成一次快速排序,整个排序的过程可以递归进行,以此达到整个数组变成有序序列的目的。
为了提升性能,有时候分割后独立的两部分的个数小于某个数(比如15)的情况下,会采用其他排序算法,比如插入排序。
步骤
1.先选取一个基准数,将大于基准数的数据放在基准数后面,小于基准数的数据放在基准数的前面。
2.在小于基准数的数据中和大于基准数的数据中分别选取一个新的基准数,对这两部分继续执行步骤1。
3.继续执行步骤2,直到排序完成。