快速排序是经常考查到的排序算法。快速排序实如其名,即速度快且效率高。在绝大多数情况下,是处理大数据最快的排序算法之一。
快速排序是“交换”类的排序,通过多次划分操作实现排序,也是一种分而治之思想在排序算法上的典型应用。本质上来看,快速排序算是在冒泡排序基础上的递归分治法。
算法步骤:
1、从数列中挑出一个元素,作为“枢轴量”;
2、重新排序数列,所有元素比枢轴量小的移动至其前面,所有元素比枢轴量值大的移动至其的后面(相同的数可以到任一边);
3、递归地把小于枢轴量值元素的子数列和大于枢轴量值元素的子数列重复前两步操作,直至子数列长度为0或1。
快速排序最好情况下的时间复杂度为O(nlog2n),待排序列越接近无序,其效率越高;最坏情况下时间复杂度为O(n2)(序列已经有序的状态),待排序列越接近有序,其效率越低。平均时间复杂度为O(nlog2n)。
虽然有多个时间复杂度为O(nlog2n)的排序算法,但这里称之为快速排序算法而不是其他排序,是因为其他排序算法的基本操作执行次数的多项式最高项为X*nlog2,X为系数,快速排序的X最小,可见其在最高级别的算法中是最好的,故叫快速排序。
欢迎大家转发,一起传播知识和正能量,帮助到更多人。辛苦大家转发时注明出处(也是咱们公益编程交流群的入口网址),刘经纬老师共享知识相关文件下载地址为:http://liujingwei.cn