当前位置: 首页 > 图灵资讯 > 行业资讯> python归并排序的实现原理

python归并排序的实现原理

来源:图灵python
时间: 2024-07-25 20:26:32

原理分析

1、将一个序列从中间位置分为两个序列;

2、按照第一步继续将这两个子序列分为两部分;

3、直到所有子序列的长度都是1,也就是说,不能有两个截止日期。此时,两两合并成一个有序的序列。

实例

defmerge(arr,low,mid,high):
#low和high是整个数组的第一个和最后一个位置索引,mid是中间位置索引
#以i和j为指针,初始位置分别为两个有序序列的起始位置
#LTMP用于存储合并后的序列
i=low
j=mid+1
ltmp=[]
whilei<=midandj<=high:#只要左右两边都有数字
ifarr[i]<arr[j]:#当左边的数量小于右边的数量时
ltmp.append(arr[i])#ltmp存储左边的数字
i+=1#左边的指针向右移动一个
else:#当右边的数量小于左边的数量时
ltmp.append(arr[j])#在ltmp中存储右侧的数
j+=1#右边的指针向右移动一个
#执行上述while语句后,左边或右边没有数字。
whilei<=mid:#左边还有数的时候
ltmp.append(arr[i])#将左边剩余的数字全部存储在ltmp中
i+=1
whilej<=high:#当右边有数字的时候
ltmp.append(arr[j])#将右边剩余的数字全部存储在ltmp中
j+=1
arr[low:high+1]=ltmp#将排序后的数组写回原数组


defmerge_sort(arr,low,high):#low和high是整个数组的第一个和最后一个位置索引
iflow<high:#至少有两个元素
mid=(low+high)//2
merge_sort(arr,low,mid)#将左边递归分解
merge_sort(arr,mid+1,high)#将右侧递归分解
merge(arr,low,mid,high)#做归并

以上是python合并排序的实现原则,希望对大家有所帮助。更多Python学习指导:基础教程python基础教程

本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。