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常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
Python编程之序列操作实例详解
Jul 22 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
Jul 07 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
django实现用户注册实例讲解
Oct 30 Python
Python如何用wx模块创建文本编辑器
Jun 07 Python
Python 通过正则表达式快速获取电影的下载地址
Aug 17 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
用Python写一个简易版弹球游戏
Apr 13 Python
Python中如何处理常见报错
Jan 18 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扩展ZF――Validate扩展
2008/01/10 PHP
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
Python实现二分查找与bisect模块详解
2017/01/13 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
python实现机器学习之多元线性回归
2018/09/06 Python
python实现mean-shift聚类算法
2020/06/10 Python
前端制作动画的几种方式(css3,js)
2016/12/12 HTML / CSS
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
鲜果饮品店创业计划书
2014/01/21 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
2015年超市工作总结
2015/04/09 职场文书
繁星春水读书笔记
2015/06/30 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python