我对Python还不熟悉。我无法理解程序如何在“print”(“Merging”,alist)之后被引导回mergeSort。有人能解释一下吗?谢谢
def mergeSort(alist):
print("Splitting ",alist)
3 if len(alist)>1:
mid = len(alist)//2
lefthalf = alist[:mid]
righthalf = alist[mid:]
8 mergeSort(lefthalf)
9 mergeSort(righthalf)
i=0
j=0
k=0
while i<len(lefthalf) and j<len(righthalf):
if lefthalf[i]<righthalf[j]:
alist[k]=lefthalf[i]
i=i+1
else:
alist[k]=righthalf[j]
j=j+1
k=k+1
while i<len(lefthalf):
alist[k]=lefthalf[i]
i=i+1
k=k+1
while j<len(righthalf):
alist[k]=righthalf[j]
j=j+1
k=k+1
32 print("Merging ",alist)
alist = [54,26,93,17,77,31,44,55,20]
mergeSort(alist)
print(alist)
当我运行你的程序时,我得到:
拆分:
分析如下:
1)你的阵型首先被带入
2)然后拆分数组的左半部分,并将其作为一个数组
3)左半部分被视为阿吉安
4)现在你的年龄是54岁
一旦你弄明白了,再看右半部分同样的图案。你知道吗
它是递归。你知道吗
合并:
1)合并排序的核心是两个数组的合并。你知道吗
2)每个阶段合并2个阵列。你知道吗
3)每次拆分到单个元素时,都会合并两个数组。你知道吗
希望这有帮助。要了解更多信息,请查看合并排序上的youtube视频。你知道吗
相关问题 更多 >
编程相关推荐