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实现代码统计工具(终极篇)
Jul 04 Python
python使用__slots__让你的代码更加节省内存
Sep 05 Python
Python实现登陆文件验证方法
Oct 06 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
Python range与enumerate函数区别解析
Feb 28 Python
Django DRF路由与扩展功能的实现
Jun 03 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
通过实例简单了解python yield使用方法
Aug 06 Python
Python 可视化神器Plotly详解
Dec 26 Python
Python PIL按比例裁剪图片
May 11 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
escape unescape的php下的实现方法
2007/04/27 PHP
php UTF-8、Unicode和BOM问题
2010/05/18 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
PHP中phar包的使用教程
2017/06/14 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
Js注册协议倒计时的小例子
2013/06/24 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
深入理解python中sort()与sorted()的区别
2018/08/29 Python
解决Python二维数组赋值问题
2019/11/28 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
财务会计专业推荐信
2013/11/30 职场文书
局火灾防控工作方案
2014/05/25 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
Python中time标准库的使用教程
2022/04/13 Python