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定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
django解决跨域请求的问题
Nov 11 Python
实时获取Python的print输出流方法
Jan 07 Python
对python中if语句的真假判断实例详解
Feb 18 Python
wxPython实现列表增删改查功能
Nov 19 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 Python
Python devel安装失败问题解决方案
Jun 09 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 Python
Python调用Redis的示例代码
Nov 24 Python
python元组打包和解包过程详解
Aug 02 Python
Python可视化神器pyecharts绘制水球图
Jul 07 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调用Google translate_tts api实现代码
2013/08/07 PHP
PHP中的替代语法简介
2014/08/22 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
IE与FireFox中的childNodes区别
2011/10/20 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
Python类的基础入门知识
2008/11/24 Python
初学Python实用技巧两则
2014/08/29 Python
对于Python中RawString的理解介绍
2016/07/07 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
生产操作工岗位职责
2014/09/16 职场文书
毕业设计论文评语
2014/12/31 职场文书
专家推荐信怎么写
2015/03/25 职场文书
党支部工作总结2015
2015/04/01 职场文书
车辆管理制度范本
2015/08/05 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
浅谈python中的多态
2021/06/15 Python
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers