Day03:快速排序

Posted 粤台计科

tags:

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

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。


基本思想:通过一趟排序将要排序的数据划分成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。


原理:选择一个关键值作为基准值。比基准值小的都在左边(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素。


以{10,8,5,2,6}为例


Day03:快速排序

参照以下的代码,逐步理解上图的过程。


Day03:快速排序
Day03:快速排序

图(7)移动right/left的操作对应下面的红框内的代码,蓝色框内对应重复(2)(3)(4)(5)(6)步骤


时间复杂度:


最优的情况下时间复杂度为:O( nlogn )


最差的情况下时间复杂度为:O( n^2 )


平均时间复杂度也是:O(nlogn)



算法稳定性:


相等元素可能会因为分区而交换顺序,所以它是不稳定的算法。


完整代码如下:




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

Day4-快速排序和反转整数

每天一题 · Day1 · 快速排序[785]

啊哈!算法--第03节--快速排序

算法快速排序

2021-05-09快速排序

排序算法04快速排序