简介
快速排序,可能是应用最为广泛的排序算法,它实现简单,适合于各种不同输入数据,并且一般来讲比其他排序算法都快很多,并且是原地排序(只需要一个很小的辅助栈),将长度为N的数组排序所需的时间和NlgN成正比
基本原理:将一个数组分为两个子数组,将两部分独立排序,当两子数组都有序时,整个数组也就自然有序了,不需要归并子数组。
快速排序与归并排序是互补的:归并排序将数组分成两个子数组分别排序,并将有序的子数组归并以将整个数组排序;而快速排序将数组排序的方式则是当两个子数组都有序时整个数组也就自然有序了。
算法主要步骤:
- 从数组中跳出一个元素,称为基准;
- 重新排列数组,所有元素比基准值小的就放到基准的前面,所有比基准值大的就放到基准的后面,与基准相同的可以放到任一边
- 分别对基准两边的元素按照这个步骤再次排序,最后就能得到两边有序的数组,整体上就是有序数组了
具体分析
动图演示
算法实现与分析
1 | public class QuickSort{ |
结论:将长度为N的无重复数组排序,快速排序平均需要 ~ 2NlnN次,约等于 1.39NlgN次比较
参考
- 本文作者: xczll
- 本文链接: https://xczllgit.github.io/2020/04/19/algorithm/2020-04-19-quickSort/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!