什么是快速排序

更新时间:02-08 教程 由 孤己i 分享

什么是快速排序?

1. 如何理解快速排序

快速排序是对冒泡排序的一种改进, 它是不稳定的。由C. A. R. Hoare在1962年提出的一种划分交换排序,采用的是分治策略(一般与递归结合使用),以减少排序过程中的比较次数,它的最好情况O(nlogn),最坏情况O(n^2),平均时间复杂度为O(nlogn)。分而治之不是一种解决问题的算法,而是一种希望问题分解,将复杂的问题划分为多个简单问题来解决的思想。

快速排序的基本思想:

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

快速排序的步骤:

(1) 从数列中挑出一个"基准值"(pivot)。

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

(3) 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

注意:基准元素/左游标/右游标都是针对单趟排序而言的,也就是说在整个排序过程的多趟排序中,各趟排序取得的基准元素/左游标/右游标一般都是不同的。对于基准元素的选取,原则上是任意的,但是一般我们选取数组中第一个元素为基准元素(假设数组随机分布)。

2. 快速排序的过程描述

(1)选择最右边的元素为基准数7;

(2)将小于7的放在左边,大于7的放在右边,然后将基准数放到中间;

(3)然后再重复操作从左边的数组选择一个基准点2;

(4)3比2大则放到基准树的右边;

(5)右边的数组也是一样选择12作为基准数,15比12大所以放到了12的右边;

(6)最后出来的结果就是从左到右 2 ,3,7,12,15了。

声明:关于《什么是快速排序》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2190098.html