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获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
Python中的对象,方法,类,实例,函数用法分析
Jan 15 Python
python实现的简单FTP上传下载文件实例
Jun 30 Python
python追加元素到列表的方法
Jul 28 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
Oct 13 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
Jan 29 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
Python查找第n个子串的技巧分享
Jun 27 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
关于numpy中eye和identity的区别详解
Nov 29 Python
django 数据库返回queryset实现封装为字典
May 19 Python
python基于exchange函数发送邮件过程详解
Nov 06 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
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
PHP图片上传代码
2013/11/04 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
jQuery原型属性和原型方法详解
2015/07/07 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
python开发之thread线程基础实例入门
2015/11/11 Python
Python正则捕获操作示例
2017/08/19 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
pycharm 设置项目的根目录教程
2020/02/12 Python
Python中os模块功能与用法详解
2020/02/26 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
就业推荐表自我鉴定
2013/10/29 职场文书
岗位工作说明书
2014/07/29 职场文书
初中学生操行评语
2014/12/26 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL