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 相关文章推荐
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
python去除拼音声调字母,替换为字母的方法
Nov 28 Python
python2和python3在处理字符串上的区别详解
May 29 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
Python 中list ,set,dict的大规模查找效率对比详解
Oct 11 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
Python 面向对象之封装、继承、多态操作实例分析
Nov 21 Python
pandas factorize实现将字符串特征转化为数字特征
Dec 19 Python
django数据模型on_delete, db_constraint的使用详解
Dec 24 Python
Jupyter notebook无法导入第三方模块的解决方式
Apr 15 Python
Python实现粒子群算法的示例
Feb 14 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下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
python zip文件 压缩
2008/12/24 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
如何一键升级Python所有包
2020/11/05 Python
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
新学期教师寄语
2014/04/02 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
关于开学的感想
2015/08/10 职场文书
《鲸》教学反思
2016/02/23 职场文书
Java并发编程必备之Future机制
2021/06/30 Java/Android