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 str与repr的区别
Mar 23 Python
python 数据清洗之数据合并、转换、过滤、排序
Feb 12 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
Flask框架Flask-Principal基本用法实例分析
Jul 23 Python
Django添加sitemap的方法示例
Aug 06 Python
python生成n个元素的全组合方法
Nov 13 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
Python @property使用方法解析
Sep 17 Python
python中自带的三个装饰器的实现
Nov 08 Python
Python urllib.request对象案例解析
May 11 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 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读写文件的方法(生成HTML)
2006/11/27 PHP
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
php 生成短网址原理及代码
2014/01/23 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
javascript 特殊字符串
2009/02/25 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
微信小程序tab左右滑动切换功能的实现代码
2021/02/08 Javascript
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
理解Python中的With语句
2015/02/02 Python
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
python实现磁盘日志清理的示例
2020/11/05 Python
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
银行办理业务介绍信
2014/01/18 职场文书
物流专员岗位职责
2014/02/17 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
教师节座谈会主持词
2015/07/03 职场文书
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle