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))