- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
python实现快速排序的几种方法
快速排序算法说明:
设要 HYPERLINK /view/58783.htm \t _blank 排序的 HYPERLINK /view/209670.htm \t _blank 数组是A[0]……A[N-1],首先任意选取一个数据(通常选用中间的数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速 HYPERLINK /view/58783.htm \t _blank 排序。值得注意的是,快速 HYPERLINK /view/58783.htm \t _blank 排序不是一种稳定的 HYPERLINK /view/297739.htm \t _blank 排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。
一趟快速 HYPERLINK /view/58783.htm \t _blank 排序的算法是:
1)设置两个 HYPERLINK /view/296689.htm \t _blank 变量i、j, HYPERLINK /view/58783.htm \t _blank 排序开始的时候:i=0,j=N-1;
2)以第一个 HYPERLINK /view/209670.htm \t _blank 数组元素作为关键数据,赋值给key,即key=A[0];
3)从j开始向前搜索,即由后开始向前搜索(j -- ),找到第一个小于key的值A[j];
4)从i开始向后搜索,即由前开始向后搜索(i ++ ),找到第一个大于key的A[i],A[i]与A[j]交换;
5)重复第3、4、5步,直到 I=J; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[j]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。
(注:以上说明摘自百度百科)
方法一:经典快速排序算法
下面的代码中是经典快速排序算法,并且范围正序和倒序两种排列方式:
#正序排列函数
def qiucksortasc(arr,begin,end):
#设定取出开始的第一个值用于判断
key=arr[begin]
#从左边开始找大于key值的元素下标
pl=begin
#从右边开始找小于key值的元素下标
pr=end
while 1:
#找到从右边开始第一个小于key的元素,如果大于key,pr-1继续寻找
while arr[pr]key:
pr=pr-1
#找到从左边开始第一个大于key的元素,如果小于key,pl+1继续寻找
while arr[pl]key:
pl=pl+1
#交换arr[pr]和arr[pl]的值
arr[pl],arr[pr]=arr[pr],arr[pl]
print pl is %d and pr is %d %(pl,pr), and ,arr
#当pr和pl相等的时候跳出循环
if pl==pr:
print 完成一趟快排
break;
#递归开始
#对key左边的元素开始排序
if(pl+1end):
qiucksortasc(arr,pl+1,end)
#对key右边的元素开始排序
if(pr-1begin):
qiucksortasc(arr,begin,pr-1)
#倒序排列函数
def qiucksortdesc(arr,begin,end):
#设定取出开始的第一个值用于判断
key=arr[begin]
#从左边开始找大于key值的元素下标
pl=begin
#从右边开始找小于key值的元素下标
pr=end
while 1:
#找到从右边开始第一个大于key的元素,如果小于key,pr-1继续寻找
while arr[pr]key:
pr=pr-1
#找到从左边开始第一个小于key的元素,如果大于key,pl+1继续寻找
while arr[pl]k
您可能关注的文档
- LOL英雄联盟符文改动后的1些观点.doc
- MATLABOptimizati0nT00lb0x应用基础.doc
- Matfsl关于昆明医学院2011年硕士研究生网上调剂说明.doc
- matlab中的自定义函数和调用.docx
- Matlab中的逻辑运算和和的区别.doc
- matlab和excelxlsread、xlswrite实用方法.docx
- matlab之求解[方程组].doc
- MATLABNewt0n迭代法解非线性方程.doc
- MATLAB产生各种分布随机数.doc
- matlab实验心得小结.doc
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解.doc
- 2025年01月中国人民大学文学院公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024黑龙江省农业投资集团有限公司权属企业市场化选聘10人笔试参考题库附带答案详解.pdf
- 2025汇明光电秋招提前批开启笔试参考题库附带答案详解.pdf
- 2024中国能建葛洲坝集团审计部公开招聘1人笔试参考题库附带答案详解.pdf
- 2024吉林省水工局集团竞聘上岗7人笔试参考题库附带答案详解.pdf
- 2024首发(河北)物流有限公司公开招聘工作人员笔试参考题库附带答案详解.pdf
- 2023国家电投海南公司所属单位社会招聘笔试参考题库附带答案详解.pdf
- 2024湖南怀化会同县供水有限责任公司招聘9人笔试参考题库附带答案详解.pdf
- 2025上海烟草机械有限责任公司招聘22人笔试参考题库附带答案详解.pdf
文档评论(0)