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

快速排序(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

相关推荐

  • 我来分享2019年的SEO优化有什么变化。

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

    2022年10月31日
    020
  • 分享网站SEO优化如何应对频繁的算法更新。

    面对算法的不断变化,有些站长们一方面显得有些沮丧气馁,另一方面还沉浸在失败的阴影中,当然辛辛苦苦做的排名没有了难免会有点难以接受,但是事实就是事实,既然都已经大势所趋了,就应该好好的方调整好自己的思…

    2023年6月27日
    00
  • 分享SEO优化人员需要懂搜索引擎算法吗。

    seo是一个神奇的职业,每个从业人员都希望探其究竟,试图更好的掌握搜索引擎原理,而整日每天热衷于到各个角落谈论搜索引擎算法,期望整理出一套自己的优化算法。 实际上,这并没有什么问题,学而不思则罔,思而不…

    2023年6月28日
    00
  • 我来分享惊雷算法后搜索引擎优化如何做。

    搜索引擎优化技术伴随着互联网的发展快速崛起,但搜索引擎优化究竟路在何方,特别是惊雷算法后却让许多站长迷茫彷徨,以下几个方面说下现阶段搜索引擎优化现状如何。1、用户体验百度白皮书已经明确表达了对用户体验…

    2023年6月30日
    00
  • 教你如何提高seo优化用户网站的体验。

    如何提高seo优化用户网站的体验? 在我们谈论搜索引擎算法的同时,SEO优化人员,经常列举大量的百度算法,用于强调目前百度搜索的线上操作规范,这是一个非常好的习惯。 比如: ①惊雷算法:告知你不要尝试利用刷IP…

    2022年11月14日
    00
  • 关于python函数递归调用例子。

    在Python中,递归是一种解决问题的方法,它将问题分解为更小的子问题,直到这些子问题可以直接解决,递归通常用于处理具有树形结构或分治策略的问题,如排序、搜索等,本文将介绍如何在Python中使用类函数实现递归…

    2024年7月28日
    00
  • 教你Zookeeper Znode实例分析。

    Zookeeper是一个分布式协调服务,它提供了一种简单的、高性能的、可靠的分布式协调机制,在Zookeeper中,Znode是一种特殊的节点,它可以用来存储数据、配置信息等,本文将对Zookeeper中的Znode实例进行分析。 1. Zn…

    2024年6月13日
    00
  • 石榴算法的名称由来,有什么影响呢?

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

    2022年5月21日
    0332

联系我们

QQ:951076433

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