Python实现的快速排序算法详解

发布时间 - 2026-01-11 02:35:34    点击率:

本文实例讲述了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函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。


# Python  # 快速排序  # 算法  # Python快速排序算法实例分析  # 快速排序的算法思想及Python版快速排序的实现示例  # Python实现快速排序算法及去重的快速排序的简单示例  # Python实现快速排序和插入排序算法及自定义排序的示例  # javascript与Python快速排序实例对比  # Python实现的数据结构与算法之快速排序详解  # python快速排序代码实例  # python 算法 排序实现快速排序  # python 快速排序代码  # 快速排序的四种python实现(推荐)  # 递归  # 两部分  # 进阶  # 操作技巧  # 比其  # 相关内容  # 都要  # 感兴趣  # 数据结构  # 给大家  # 然后再  # 更多关于  # 都比  # 按此  # 所述  # 程序设计  # 使用技巧  # 讲述了  # print  # return 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何基于云服务器快速搭建个人网站?  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  新三国志曹操传主线渭水交兵攻略  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  如何用美橙互联一键搭建多站合一网站?  Swift开发中switch语句值绑定模式  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Python文件操作最佳实践_稳定性说明【指导】  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Android okhttputils现在进度显示实例代码  JavaScript常见的五种数组去重的方式  如何快速搭建高效可靠的建站解决方案?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  详解MySQL数据库的安装与密码配置  如何在万网主机上快速搭建网站?  Laravel模型事件有哪些_Laravel Model Event生命周期详解  Android中AutoCompleteTextView自动提示  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  javascript中对象的定义、使用以及对象和原型链操作小结  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  在线教育网站制作平台,山西立德教育官网?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  如何在IIS7上新建站点并设置安全权限?  iOS验证手机号的正则表达式  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  如何快速生成ASP一键建站模板并优化安全性?  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  微信小程序 HTTPS报错整理常见问题及解决方案  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  详解Android——蓝牙技术 带你实现终端间数据传输  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  个人摄影网站制作流程,摄影爱好者都去什么网站?  北京网站制作公司哪家好一点,北京租房网站有哪些?  JavaScript如何实现音频处理_Web Audio API如何工作?  如何生成腾讯云建站专用兑换码?