快速排序

本文介绍了快速排序算法的基本思想和步骤,通过分治法将数据分为两部分,保证一部分的所有数据都小于另一部分。在实际操作中,当子数组大小小于一定值时,会使用插入排序。文中还详细解释了分区过程,并给出了代码实现。
摘要由CSDN通过智能技术生成

前言

最近在学数据结构与算法,在此做一下记录,方便时不时复习一下。如果有什么做得不对的地方,恳请指出,万分感谢。

简述

快速排序算法是对冒泡排序的一种改进,也是采用分治法的一个典型应用。

算法思想是先任意选取一个数据(比如数组中的第一个数)作为关键数据,把这个选取的数成为基准数(Pivot),然后将数组里面比它小的数全部放在它前面,比它大的数都放在它后面,这个过程结束之后为一次快速排序,也被称为一次分区排序。通过一趟快速排序将要排序的数据分割成为独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后对这两部分再分别选取一个基准数,再完成一次快速排序,整个排序的过程可以递归进行,以此达到整个数组变成有序序列的目的。

为了提升性能,有时候分割后独立的两部分的个数小于某个数(比如15)的情况下,会采用其他排序算法,比如插入排序。

步骤

1.先选取一个基准数,将大于基准数的数据放在基准数后面,小于基准数的数据放在基准数的前面。

2.在小于基准数的数据中和大于基准数的数据中分别选取一个新的基准数,对这两部分继续执行步骤1。

3.继续执行步骤2,直到排序完成。

图示

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值