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获取当前时间的方法
Jan 14 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
python实现redis三种cas事务操作
Dec 19 Python
Python爬虫天气预报实例详解(小白入门)
Jan 24 Python
matplotlib subplots 调整子图间矩的实例
May 25 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
python实现整数的二进制循环移位
Mar 08 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 Python
Windows下Sqlmap环境安装教程详解
Aug 04 Python
pandas中对文本类型数据的处理小结
Nov 01 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指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
vue.js与后台数据交互的实例讲解
2018/08/08 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
python赋值操作方法分享
2013/03/23 Python
深入理解python中的atexit模块
2017/03/07 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
Django框架models使用group by详解
2020/03/11 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
新闻学专业应届生求职信
2013/11/08 职场文书
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
银行简历自我评价
2014/02/11 职场文书
运动会开幕式主持词
2014/03/28 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
乔迁之喜答谢词
2015/01/05 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
医院合作意向书范本
2015/05/08 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python