递归排序算法快速排序的实现过程

快速排序(Insertion Sort)也是一种递归排序算法

快速排序原理:先以列表中的任意一个数为基准(一般选头或尾),将列表分为左、右两个子列表。

左子列表的数要比基准数小,右子列表的数要比基准数大。然后继续把左子列表和右子列表按同样的方法继续分解、比较,直到分无可分。最后将左子列表(比基准数小)+基准数+右子列表(比基准数大)连接起来得到一个有序数列。

递归排序算法快速排序的实现过程

以数列[3,5,8,1,2,9,4,7,6]为例,最初的数列顺序如上图所示。

第一次分组:以最后一个元素6为基准将数列分成两组。分别从左右两端遍历数列,比6小的分在左边,比6大的分在右边。先从左向右遍历,当遇到比6大的元素时将该元素放到右边。同理从右向左遍历时,遇到比6小的元素放到左边。当全部元素被遍历之后,将左边数列,元素6,右边数列按顺序拼接成新的数组,此时元素6的位置固定。

递归排序算法快速排序的实现过程

递归处理左边子数列:以最后一个元素2为基准,比2小的分在左边子数列中,比2大的分在右边子数列中经过一轮分组后,元素2的位置已经固定,接下来继续递归的调用上述过程……

递归排序算法快速排序的实现过程

递归处理右边子数列:以最后一个元素9为基准,比9小的分在左边子数列中,比9大的分在右边子数列中经过一轮分组后,只会分成一组【8,7】,再次递归处理【8,7】,至此排序完毕。

递归排序算法快速排序的实现过程

快速排序的程序quicksort.py的代码如下:

def quicksort(ilist):less = [] # 小于基准元素的放到这个列表中equal = [] # 等于基准元素的放到这个列表中greater = [] # 大于基准元素的放到这个列表中if len(ilist) > 1:pivot = ilist[len(ilist)-1] # 取数组最后一个元素作为基准元素for x in ilist:if x < pivot: # 小于基准元素的放到列表less中less.append(x)elif x == pivot: # 等于基准元素的放到这个列表中equal.append(x)elif x > pivot: # 大于基准元素的放到列表greater中greater.append(x)return quicksort(less)+equal+quicksort(greater) # 将三部分拼接起来else: # 只有一个元素的时候直接返回return ilist

测试快速排序方法,代码如下:

递归排序算法快速排序的实现过程

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/366913.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
黑马程序员黑马程序员订阅用户
上一篇 2023年8月29日 15:37
下一篇 2023年8月29日 15:47

相关推荐

  • ORB算法在opencv中实现方法

    在OPenCV中实现ORB算法,使用的是:1.实例化ORBorb = cv.xfeatures2d.orb_create(nfeatures)参数:·nfeatures: 特征点的最大数量2.利用orb.detectAndCompute()检测关键点并计算kp,des = orb.detectAndCompute(gray,…

    2023年8月29日
    09
  • 百度算法不断更新我们SEO如何去做。

    最近很多的新手seo咨询百度算法不断更新我们SEO如何去做,那么,下面就由小编为大家介绍一下。 百度算法不断更新我们SEO如何去做,小编为大家介绍以下几点: 第一:这是最近新推出的,大家可以不妨现在试试登录百度…

    2022年10月30日
    020
  • 小编教你稳定关键词排名需掌握这些简单SEO技巧。

    稳定关键词排名需掌握这些简单SEO技巧! 做网站优化前期投入基本看不到什么效果,seo优化有个时间过程,要清楚的知道搜索引擎新出了哪些算法,或者观察竞争对手的网站,seo人员都会知道做seo排名有点波动属于正常现…

    2022年11月14日
    00
  • 我来教你日常SEO优化中容易犯的错误。

    对于很多新手站长和seo专员来讲,很多看似起不到作用的小问题往往会影响最终的优化结果,甚至会出现引起搜索引擎的不满,导致被搜索引擎惩罚。下面小编分享几个我们日常SEO优化中容易犯的错误,希望对大家做SEO优化…

    2023年3月9日
    07
  • 小编教你全网推广:百度清风算法该怎么应对。

    几个月前百度公布了飓风算法,旨在打击一批采集网站,就在昨天百度又公布了最新的“清风算法”,本次的主题是打击不规范标题的网站。这又让一大批站长惶恐不安。今天,全网推广小编就来说说清风算法:近…

    2023年4月20日
    05
  • 我来分享2019年的SEO优化有什么变化。

    2019年的SEO优化有什么变化?时至今日虽然是移动互联网时代,但互联网营销中SEO优化作用并没有降低多少。作为重视官网的企业来说,2019年SEO优化到底要怎么做? 一、关于搜索引擎算法的相关问题 包括百度在内的搜索…

    2022年10月31日
    020
  • 石榴算法的名称由来,有什么影响呢?

    现在是网络发展时代,很多关于网络流通下的产物都会有一定的打击手段,其中石榴算法就是百度针对低质量网站的进一步打击的升级版。我们对此有什么样的了解呢? 石榴算法简介 2013年5月17日下午,百度网页搜索反作弊…

    2022年5月21日
    0337
  • “猫头鹰”是谷歌内部代码名称

    去年以来,Google搜索面临一类以前比较少见的问题,虚假新闻内容是源头,进而带来一系列相关问题,如: 编造的假新闻 带有极度偏见、煽动仇恨的内容 谣言、阴谋论类内容 冒犯性、误导性内容 这类问题被用户看到、搜…

    2022年5月24日
    0196

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息