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实现系统状态监测和故障转移实例方法
Nov 18 Python
python3基于OpenCV实现证件照背景替换
Jul 18 Python
Python定义一个跨越多行的字符串的多种方法小结
Jul 19 Python
python opencv读mp4视频的实例
Dec 07 Python
python实现蒙特卡罗方法教程
Jan 28 Python
Python实现通过解析域名获取ip地址的方法分析
May 17 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
Python写捕鱼达人的游戏实现
Mar 31 Python
如何基于Django实现上下文章跳转
Sep 16 Python
python绘制分布折线图的示例
Sep 24 Python
python字典按照value排序方法
Dec 28 Python
python中添加模块导入路径的方法
Feb 03 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版
2006/10/09 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
分享一个asp.net pager分页控件
2012/01/04 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
javascript数组遍历的方法实例分析
2016/09/13 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
javascript关于“时间”的一次探索
2019/07/24 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
Python中的魔法方法深入理解
2014/07/09 Python
python中模块的__all__属性详解
2017/10/26 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
Python 复平面绘图实例
2019/11/21 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
HTML5的革新 结构之美
2011/06/20 HTML / CSS
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
乡镇综治宣传月活动总结
2014/07/02 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
骨干教师考核评语
2014/12/31 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS