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删除列表内容
Aug 04 Python
Python+MongoDB自增键值的简单实现
Nov 04 Python
python 文件操作删除某行的实例
Sep 04 Python
Python机器学习之决策树算法
Dec 22 Python
python基于twisted框架编写简单聊天室
Jan 02 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
python3 selenium 切换窗口的几种方法小结
May 21 Python
python爬取网易云音乐评论
Nov 16 Python
PyTorch 1.0 正式版已经发布了
Dec 13 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
Cython编译python为so 代码加密示例
Dec 23 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
JavaScript分步实现一个出生日期的正则表达式
2018/03/22 Javascript
python如何实现excel数据添加到mongodb
2015/07/30 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
会计职业生涯规划范文
2014/01/04 职场文书
不假外出检讨书
2014/01/27 职场文书
保护环境倡议书100字
2014/05/19 职场文书
品牌转让协议书
2014/08/20 职场文书
代收款委托书范本
2014/10/01 职场文书
学生自我评语
2015/01/04 职场文书
2015年环卫工作总结
2015/04/28 职场文书
离职信范文
2015/06/23 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
学习nginx基础知识
2021/09/04 Servers
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技