python递归排序算法,python实现合并排序
原理分析
1.从中间位置将一个序列分成两个序列;
2.根据第一步将这两个子序列分成两部分;
3.直到所有子序列的长度都为1,也就是说,不能再有二等分截止。这时,两两合并成一个有序序列。
实例
defmerge(排列、低、中、高):
#low和high是整个数组的第一个和最后一个位置索引,mid是中间位置索引。
#i和J是指针,初始位置分别是两个有序序列的起始位置。
#ltmp用于存储合并后的序列。
I=低
j=中间1
ltmp=[]
Whi=midandj=high3360 #只要两边都有数字
Ifarr[i]arr[j]:#当左边的数字小于右边的数字时
Ltmp.append(arr[i])#将左边的数字存储在Ltmp中
I=1#左边的指针向右移动一个位置。
Else:#当右边的数字小于左边的数字时
Ltmp.append(arr[j])#将右边的数字存储到Ltmp中
J=1#指针向右移动一个位置。
#在上面的while语句执行后,左右两边都没有数字。
WHI=MID: #当左边还有数字的时候
Ltmp.append(arr[i])#将左边所有剩余的数字保存到Ltmp中。
i=1
Whilej=high:#当右边还有数字时
Ltmp.append(arr[j])#将右边所有剩余的数字保存到Ltmp中。
j=1
Arr [low3360high1]=ltmp #将排序后的数组写回原始数组。
Merge _ sort (arr,low,high) : # low和high是整个数组的第一个和最后一个位置索引。
Iflowih3360 #至少有两个元素
mid=(低高)//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电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。