我这里有一个使用合并排序对列表进行排序的代码。我只是在网络的某个地方得到了它。但老实说,我无法遵循代码的流程......我的意思是,我不明白它是怎么回事实施的。我可以理解某些部分,尤其是第一个部分,它将整个列表一分为二,然后对列表的每一侧进行排序。然后什么??请你告诉这里发生了什么?谢谢你。:)
def merge(badlist):
if len(badlist) == 1:
return badlist
m = len(badlist)/2
l = merge(badlist[:m])
r = merge(badlist[m:])
if not len(l) or not len(r):
return l or r
result = []
i = j = 0
while (len(result) < len(r) + len(l)):
if l[i] < r[j]:
result.append(l[i])
i += 1
else:
result.append(r[j])
j += 1
if i == len(l) or j == len(r):
result.extend(l[i:] or r[j:])
break
return result
print merge(badlist)