# 递归,先分,后合,合的时候就控制下顺序
# 递归: 终止条件? 一步的操作?返回什么?
def mergeSort(aList):
print("Now list is ",aList)
if len(aList) > 1:
middle = len(aList) //2
lefthalf = aList[ : middle]
rightHalf = aList[middle : ]
mergeSort(lefthalf)
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 += 1
else:
aList[k] = rightHalf[j]
j += 1
k += 1
if i < len(lefthalf):
aList[k] = lefthalf[i]
i += 1
k += 1
if j < len(rightHalf):
aList[k] = rightHalf[j]
j += 1
k += 1
alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
mergeSort(alist)
print(alist)