千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:广州千锋IT培训  >  技术干货  >  python 归并排序

python 归并排序

来源:千锋教育
发布人:xqq
时间: 2023-11-06 09:55:35

原理

归并操作(归并算法),指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。

步骤

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相关知识,请关注IT培训机构:千锋教育。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

python转行学java还是python

2023-11-06

python定义类不写括号吗?

2023-11-06

python如何定义接受参数的函数

2023-11-06

最新文章NEW

python如何用python随机产生一个一维数组

2023-11-06

pythonpip是什么意思

2023-11-06

python如何输入平方根

2023-11-06

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>