Day03:快速排序
Posted 粤台计科
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day03:快速排序相关的知识,希望对你有一定的参考价值。
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。
基本思想:通过一趟排序将要排序的数据划分成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
原理:选择一个关键值作为基准值。比基准值小的都在左边(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素。
以{10,8,5,2,6}为例
参照以下的代码,逐步理解上图的过程。
图(7)移动right/left的操作对应下面的红框内的代码,蓝色框内对应重复(2)(3)(4)(5)(6)步骤
时间复杂度:
最优的情况下时间复杂度为:O( nlogn )
最差的情况下时间复杂度为:O( n^2 )
平均时间复杂度也是:O(nlogn)
算法稳定性:
相等元素可能会因为分区而交换顺序,所以它是不稳定的算法。
完整代码如下:
以上是关于Day03:快速排序的主要内容,如果未能解决你的问题,请参考以下文章