思路
自底向上,层层合并,最后合并出最大的数组
def guibing(li, start, end):
if start == end:
return
mid = (start + end) // 2
guibing(li, start, mid)
guibing(li, mid + 1, end)
li1 = li[start:mid+1] + [10]
li2 = li[mid +1:] + [10]
i1 = 0
i2 = 0
for i in range(start, end + 1):
if li1[i1] <= li2[i2]:
li[i] = li1[i1]
i1 += 1
else:
li[i] = li2[i2]
i2 += 1
li = [5, 2, 4,7,1,3,2,6]
n = len(li)
guibing(li, 0, n-1)
print(li)