归并算法——python实现
# 不断地拆分,直到长度为 1
def d(ll):
len_l = len(ll)
print(len_l)
if len_l > 1:
left = 0
right = len_l - 1
mid = len_l // 2
l_left = ll[left:mid]
l_right = ll[mid:right + 1]
d1 = d(l_left)
d2 = d(l_right)
l_merge = merge(d1, d2)
return l_merge
return ll
# 合并起来
def merge(d1, d2):
l_merge = []
while d1 and d2:
if d1[0] <= d2[0]:
l_merge.append(d1[0])
d1.pop(0)
else:
l_merge.append(d2[0])
d2.pop(0)
l_merge.extend(d1)
l_merge.extend(d2)
return l_merge
ll = d([1, 1, 4, 2, 3, 5,10,22,33])
print(ll)