python快排算法详解


Posted in Python onMarch 04, 2019

快排是python经典算法之一。

1、下面讲解的是什么是快排和快排的图示。

python快排算法详解

2、快排是一种解决排序问题的运算方法。

python快排算法详解

3、快排的原理:在数组中任意选择一个数字作为基准,用数组的数据和基准数据进行比较,比基准数字打的数字的基准数字的右边,比基准数字小的数字在基准数字的左边,

第一次排序之后分为比基准数据大或比基准数据小两个部分,用刚开始的方法继续排序,直到每个排序分组中只有一个数据或没有数据为止。

python快排算法详解

4、下面以[ 7 91 23 1 6 3 79 2 ]数组为例子,进行快排运算。

python快排算法详解

5、选基准:选择数组里的第一个数字(可以选择任意数字)为基准数字

python快排算法详解

6、从j指针开始和基准数据比较之后,其中2比7小,所以将2排到7的左边。此时进行了交叉移动,所以下一个比较的是i指针对应的数据。

python快排算法详解

7、i指针与基准数据7比较,其中91比7大,所以将91排到右边,此时又一次进行了交叉移动,所以下一个比较的是j指针对应的数据。

python快排算法详解

8、j指针与基准数据7比较,其中79比7大,所以将79排到右边,此时是同侧移动,所以下一个比较的是j指针对应的数据。

python快排算法详解

python快排算法详解

9、j指针与基准数据7比较,其中3比7小,所以将3排到左边,此时又一次进行了交叉移动,所以下一个比较的是i指针对应的数据。

python快排算法详解

python快排算法详解

10、i指针与基准数据7比较,其中23比7大,所以将23排到右边,此时又一次进行了交叉移动,所以下一个比较的是j指针对应的数据。

python快排算法详解

11、j指针与基准数据7比较,其中6比7小,所以将6排到左边,此时又一次进行了交叉移动,所以下一个比较的是i指针对应的数据。

python快排算法详解

12、i指针与基准数据7比较,其中1比7小,所以将1排到右边,此时所有的数据都进行了一次排序。

python快排算法详解

13、第一趟排序之后的结果如下。根据上面的方法,基准数据的左右两侧继续快排,直到数组没有数据或数组数据为0

python快排算法详解

14、最后的排序结果如下图所示:

python快排算法详解

Python 相关文章推荐
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
Python socket网络编程TCP/IP服务器与客户端通信
Jan 05 Python
20个常用Python运维库和模块
Feb 12 Python
python中单例常用的几种实现方法总结
Oct 13 Python
解析Python的缩进规则的使用
Jan 16 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
python TK库简单应用(实时显示子进程输出)
Oct 29 Python
三个python爬虫项目实例代码
Dec 28 Python
Python安装whl文件过程图解
Feb 18 Python
python实时监控logstash日志代码
Apr 27 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 Python
Python中else的三种使用场景
Jun 16 Python
Django 内置权限扩展案例详解
Mar 04 #Python
python三方库之requests的快速上手
Mar 04 #Python
django的ORM模型的实现原理
Mar 04 #Python
Python中按值来获取指定的键
Mar 04 #Python
python实现合并两个排序的链表
Mar 03 #Python
Python给图像添加噪声具体操作
Mar 03 #Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 #Python
You might like
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
js date 格式化
2017/02/15 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
Python ellipsis 的用法详解
2020/11/20 Python
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
高级Java程序员面试要点
2013/08/02 面试题
生物技术专业研究生自荐信
2013/09/22 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
个人收入证明范本
2014/01/12 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
政治表现评语
2014/05/04 职场文书
正科级干部考察材料
2014/05/29 职场文书
2014年教研室工作总结
2014/12/06 职场文书
个人欠条范本
2015/07/03 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android
基于redis+lua进行限流的方法
2022/07/23 Redis