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实现sublime3的less编译插件示例
Apr 27 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
Python操作SQLite数据库的方法详解
Jun 16 Python
Python实现的双色球生成功能示例
Dec 18 Python
Python3 queue队列模块详细介绍
Jan 05 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
python购物车程序简单代码
Apr 18 Python
Python 实现子类获取父类的类成员方法
Jan 11 Python
python 猴子补丁(monkey patch)
Jun 26 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
python pprint模块中print()和pprint()两者的区别
Feb 10 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
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
PHP 类与构造函数解析
2017/02/06 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
python 代码运行时间获取方式详解
2020/09/18 Python
strlen的几种不同实现方法
2013/05/31 面试题
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
不假外出检讨书
2014/01/27 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
2014年德育工作总结
2014/11/20 职场文书
致地震灾区的慰问信
2015/03/23 职场文书