05-快速排序

Posted 深度学习和机器视觉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05-快速排序相关的知识,希望对你有一定的参考价值。

快速排序


快速排序(英语: Quicksort). 又称划分交换排序(partition-exchange sort).通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。


步骤为:

从数列中挑出一个元素,称为"基准"(pivot),

重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。


01-可视化-‘快速排序’

05-快速排序

02-快速排序

05-快速排序


快速排序时间复杂度


1.最优时间复杂度:O(nlogn) 总共执行n次, 每次是2^? = n, 及logn. so, 等于nlogn


2.最坏时间复杂度:O(n^2).


3.稳定性:不稳定



以上是关于05-快速排序的主要内容,如果未能解决你的问题,请参考以下文章

js排序算法05——快速排序

如何使用快速排序对字符串数组进行排序

C ++快速排序算法崩溃[关闭]

为啥我的基数排序 JAVA 实现比快速排序慢?

C++ 快速排序枢轴优化

快速排序返回未排序的中间/中值元素?