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

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

相关推荐

  • 关于python函数递归调用例子。

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

    2024年7月28日
    00
  • SEO相关细雨算法的一些详情问题

    百度的各种算法也比较多,细雨算法,其实就是针对百度页面标题作弊,比如说包含一些官网,一些文章标题堆砌关键词的情况,都可能会导致细雨的打击,关于细雨算法可能有的一些站长也不是特别了解,不知道关于细雨算…

    2022年5月27日
    0294
  • 蓝天算法是什么以及有哪些作用呢

    蓝天算法是什么呢?说到蓝天算法大部分都会觉得这是某种计算公式,其实蓝天算法是可以打击一些低劣内容的一种搜索引擎法则,其实蓝天算法有哪些作用呢?下面就让我们一起去看看吧。 蓝天算法 蓝天算法是什么呢 主要是…

    2022年5月21日
    0153
  • 石榴算法的名称由来,有什么影响呢?

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

    2022年5月21日
    0332
  • 经验分享python递归算法40例。

    递归是一种解决问题的方法,它将问题分解为更小的子问题,直到问题的规模足够小,可以直接解决,在Python中,递归算法可以用于解决许多经典问题,例如阶乘、斐波那契数列、汉诺塔等,本文将通过一个经典的递归算法…

    2024年6月20日
    00
  •  百度算法不断调整,你的优化方案也在不断变化。

    百度算法不断调整,你的优化方案也在不断变化。现如今,百度算法一直在改变,网站的优化方案也在不断变化,那么,我们该怎么着手呢? 1.数据分析针对TOP50,近期上涨与下跌网站,进行有针对性的数据分析,你会清晰…

    2022年10月30日
    014
  • 百度绿萝算法针对网站哪些问题

    百度绿萝算法是百度为了解决搜索引擎反作弊等问题而产生的一种算法,那么百度绿萝算法原理是什么?百度绿萝算法针对网站哪些问题呢?下面就让我们一起去看看吧。 百度绿萝算法 百度绿萝算法原理 1、链接title与所指向…

    2022年5月21日
    0292
  • 纯干货:抖音排名算法解析 抖音搜索排名影响因素表

    翻了抖音官方教程、自己发了视频、投DOU 搞测试,整理了抖音搜索排名影响因素表,大家记得收藏。              账号相关因素解析       账号名称              账号简介              头像              认证      …

    2022年1月20日 SEO操作
    01.2K

联系我们

QQ:951076433

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