Python实现的快速排序算法详解


Posted in Python onAugust 01, 2017

本文实例讲述了Python实现的快速排序算法。分享给大家供大家参考,具体如下:

快速排序基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

如序列[6,8,1,4,3,9],选择6作为基准数。从右向左扫描,寻找比基准数小的数字为3,交换6和3的位置,[3,8,1,4,6,9],接着从左向右扫描,寻找比基准数大的数字为8,交换6和8的位置,[3,6,1,4,8,9]。重复上述过程,直到基准数左边的数字都比其小,右边的数字都比其大。然后分别对基准数左边和右边的序列递归进行上述方法。

实现代码如下:

def parttion(v, left, right):
  key = v[left]
  low = left
  high = right
  while low < high:
    while (low < high) and (v[high] >= key):
      high -= 1
    v[low] = v[high]
    while (low < high) and (v[low] <= key):
      low += 1
    v[high] = v[low]
    v[low] = key
  return low
def quicksort(v, left, right):
  if left < right:
    p = parttion(v, left, right)
    quicksort(v, left, p-1)
    quicksort(v, p+1, right)
  return v
s = [6, 8, 1, 4, 3, 9, 5, 4, 11, 2, 2, 15, 6]
print("before sort:",s)
s1 = quicksort(s, left = 0, right = len(s) - 1)
print("after sort:",s1)

运行结果:

before sort: [6, 8, 1, 4, 3, 9, 5, 4, 11, 2, 2, 15, 6]
after sort: [1, 2, 2, 3, 4, 4, 5, 6, 6, 8, 9, 11, 15]

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
Python sys.argv用法实例
May 28 Python
深入讲解Python编程中的字符串
Oct 14 Python
Python优先队列实现方法示例
Sep 21 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
解决Keras自带数据集与预训练model下载太慢问题
Jun 12 Python
python线性插值解析
Jul 05 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
Nov 15 Python
PyQt5中QSpinBox计数器的实现
Jan 18 Python
Python实现的弹球小游戏示例
Aug 01 #Python
Python的mysql数据库的更新如何实现
Jul 31 #Python
Python操作csv文件实例详解
Jul 31 #Python
Python实现字典去除重复的方法示例
Jul 31 #Python
浅析使用Python操作文件
Jul 31 #Python
Python字典实现简单的三级菜单(实例讲解)
Jul 31 #Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 #Python
You might like
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php自定文件保存session的方法
2014/12/10 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
php中使用websocket详解
2016/09/23 PHP
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
AngularJs Javascript MVC 框架
2016/06/20 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
活动总结报告范文
2014/05/04 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
python爬虫之爬取笔趣阁小说
2021/04/22 Python
python如何将mat文件转为png
2022/07/15 Python