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类的动态修改的实例方法
Mar 24 Python
django输出html内容的实例
May 27 Python
python基于物品协同过滤算法实现代码
May 31 Python
python format 格式化输出方法
Jul 16 Python
在python中将字符串转为json对象并取值的方法
Dec 31 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
Aug 27 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
python安装及变量名介绍详解
Dec 12 Python
python单例模式的应用场景实例讲解
Feb 24 Python
解析python中的jsonpath 提取器
Jan 18 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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 serialize()与unserialize()的用法
2013/06/05 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
理解JS绑定事件
2016/01/19 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
总结python爬虫抓站的实用技巧
2016/08/09 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
python安装pil库方法及代码
2019/06/25 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
聘任书模板
2014/03/29 职场文书
给小学生的新年寄语
2014/04/04 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
会计岗位职责
2015/02/03 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
青涩记忆观后感
2015/06/18 职场文书
Python torch.flatten()函数案例详解
2021/08/30 Python
浅析Python中的随机采样和概率分布
2021/12/06 Python
PHP 时间处理类Carbon
2022/05/20 PHP