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之禅》中对于Python编程过程中的一些建议
Apr 03 Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 Python
python的dataframe和matrix的互换方法
Apr 11 Python
Python 将Matrix、Dict保存到文件的方法
Oct 30 Python
Python 读取串口数据,动态绘图的示例
Jul 02 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 Python
Python数据可视化:幂律分布实例详解
Dec 07 Python
浅谈图像处理中掩膜(mask)的意义
Feb 19 Python
在keras中model.fit_generator()和model.fit()的区别说明
Jun 17 Python
python中return如何写
Jun 18 Python
用python批量移动文件
Jan 14 Python
Python装饰器的练习题
Nov 23 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中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
php加密解密函数authcode的用法详细解析
2013/10/28 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
Extjs入门之动态加载树代码
2010/04/09 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
原生js实现轮播图
2017/02/27 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
基于python实现微信模板消息
2015/12/21 Python
python实现简单爬虫功能的示例
2016/10/24 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
Django stark组件使用及原理详解
2019/08/22 Python
python批量处理文件或文件夹
2020/07/28 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
美国女孩服装购物网站:Justice
2017/03/04 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
中层干部岗位职责
2013/12/18 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
鸦片战争观后感
2015/06/09 职场文书
排球赛新闻稿
2015/07/17 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
比较几种Redis集群方案
2021/06/21 Redis
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js