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的Flask中使用WTForms表单框架的基础教程
Jun 07 Python
Django实现登录随机验证码的示例代码
Jun 20 Python
python3使用QQ邮箱发送邮件
May 20 Python
Python3内置模块pprint让打印比print更美观详解
Jun 02 Python
在python中用url_for构造URL的方法
Jul 25 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
Django实现将views.py中的数据传递到前端html页面,并展示
Mar 16 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
拿来就用!Python批量合并PDF的示例代码
Aug 10 Python
python Pexpect模块的使用
Dec 25 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 Python
Python Pandas解析读写 CSV 文件
Apr 11 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 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
vue实现防抖的实例代码
2021/01/11 Vue.js
vue 递归组件的简单使用示例
2021/01/14 Vue.js
Python基础之函数用法实例详解
2014/09/10 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
计算机工程学院个人求职信
2013/10/05 职场文书
中专毕业生自我鉴定
2013/11/21 职场文书
经济职业学院毕业生自荐书
2014/03/17 职场文书
《画》教学反思
2014/04/14 职场文书
员工合理化建议书
2014/05/19 职场文书
检讨书怎么写
2015/01/23 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
追悼词范文大全
2015/06/23 职场文书
听课评课活动心得体会
2016/01/15 职场文书