首页 / 知识
python 归并排序
2023-11-12 13:30:00
原理
归并操作(归并算法),指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。
步骤
1.迭代法
申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
设定两个指针,最初位置分别为两个已经排序序列的起始位置
3.比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
重复步骤3直到某一指针到达序列尾
将另一序列剩下的所有元素直接复制到合并序列尾
递归法
假设序列共有n个元素:
将序列每相邻两个数字进行归并操作,形成{\displaystylefloor(n/2)}floor(n/2)个序列,排序后每个序列包含两个元素
将上述序列再次归并,形成{\displaystylefloor(n/4)}floor(n/4)个序列,每个序列包含四个元素
重复步骤2,直到所有元素排序完毕
代码
#递归法
defmerge_sort(list):
#认为长度不大于1的数列是有序的
iflen(list)<=1:
returnlist
#二分列表
middle=len(list)//2
left=merge_sort(list[:middle])
right=merge_sort(list[middle:])
#最后一次合并
returnmerge(left,right)
#合并
defmerge(left,right):
l,r=0,0
result=[]
whilel
ifleft[l]
result.append(left[l])
l+=1
else:
result.append(right[r])
r+=1
reslut+=left[l:]
result+=right[r:]
returnresult
以上内容为大家介绍了python归并排序,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们
最新内容
相关内容
为何你的Python代码应是扁平与稀疏
为何你的Python代码应是扁平与稀疏的,代码,培训,信息,观察,设计,工具,嵌套,闻闻,程序员,沉思,Python之禅之所以得名,正是由于它那简明扼要的规用Python开发一个简单的猜数字游戏
用Python开发一个简单的猜数字游戏,数字,代码,培训,官网,设备,程序,玩家,注释,内容,游戏,本文介绍如何使用Python制作一个简单的猜数字游戏。如何提速优化python代码?
如何提速优化python代码?,代码,时间,数据,新增,写法,包装,情况,下来,面临,工作,Python是一种脚本语言,相比C/C++这样的编译语言,在效率和性能方如何让Python代码更易维护
如何让Python代码更易维护,代码,项目,标准,工具,质量,地方,一致,更正,培训,控制权,检查你的代码的质量,通过这些外部库使其更易维护。可读性很Python中常用的 json 操作有哪些?
Python中常用的 json 操作有哪些?,数据,培训,标准,对象,函数,参数,操作,字符串,下面,文件,刚开始接触json的操作,我主要有下面几个疑问:json操Python文件操作步骤示例
Python文件操作步骤示例,异常,代码,信息,文件,设计,简介,通用,意外,中级,培训,我们来读取这样一个文本文件:song.txt,该文件的字符编码为utf-8python文件读写实现原理与操作步骤
python文件读写实现原理与操作步骤,数据,文件,培训,操作系统,操作,对象,磁盘,函数,可能会,原理,1.文件读写实现原理文件读写就是一种常见的IOPython切片操作详细例子
Python切片操作详细例子,情况,连续,培训,数据,切片,操作,终点,两者,矛盾,起点,以下示例均以列表a=[0,1,2,3,4,5,6,7,8,9]为例:>>>a=[0,1,2,3,4Python常用切片操作
Python常用切片操作,位置,培训,元素,嵌套,切片,对象,内部,操作,奇数,偶数,以列表:a=[0,1,2,3,4,5,6,7,8,9]为说明对象1.取偶数位置>>>b=a[::2]Python切片操作的一般方式
Python切片操作的一般方式,数据,步长,培训,表示,参数,切片,终点,索引,方向,起点,一个完整的切片表达式包含两个“:”,用于分隔三个参数(start_python操作系统接口模块:OS
python操作系统接口模块:OS,管理,工作,工具,系统,服务,培训,模块,文件,目录,函数,OS模块提供了很多与操作系统进行交互的函数,比如常见的使用函python丰富的内置类型及相关操作
python丰富的内置类型及相关操作,数字,培训,索引,元素,切片,类型,操作,列表,嵌套,引号,python的内置类型如下:lString:字符串放在单引号、双引