![]()
def MergeSort(array):
arrayLen = len(array)
# 先判断边界条件
if arrayLen<1:
return []
if arrayLen == 1:
return array
#做map操作,也就是divide
index = arrayLen//2
arrayleft = MergeSort(array[:index])
arrayright = MergeSort(array[index:])
retarray = MergeCore(arrayleft,arrayright)
return retarray
def MergeCore(arrayleft,arrayright):
# 先判断边界条件
if len(arrayleft)==0:
return arrayright
if len(arrayright)==0:
return arrayleft
# 定义2个指针,分别指向两个有序数组的第一个元素
i,j = 0,0
retarray = []
while i < len(arrayleft) and j < len(arrayright):
if arrayleft[i]<arrayright[j]:
retarray.append(arrayleft[i])
i += 1
else:
retarray.append(arrayright[j])
j += 1
# 将剩余的数组全部放入返回的list中
retarray.extend(arrayleft[i:])
retarray.extend(arrayright[j:])
return retarray
if __name__ == "__main__":
array = [14,33,27,10,35,19,42,44]
print(MergeSort(array))