【发布时间】:2017-12-28 07:43:21
【问题描述】:
我了解合并排序的工作原理是分而治之,你不断减半,直到你达到可以在恒定时间内排序的地步,或者列表只是一个元素,然后你合并列表。
def mergesort(l):
if len(l)<=1:
return l
l1 = l[0:len(l)//2+1]
l2 = l[len(l)//2:]
l1 = mergesort(l1)
l2 = mergesort(l2)
return merge(l1,l2)
我有一个有效的合并实现,我检查它工作正常,但合并排序实现不起作用,它只返回列表的一半元素。
我在互联网上看到合并排序是使用 l & r 和 m = (l + r)/2 实现的。我的实施有什么问题?我也在递归地细分列表并合并。
【问题讨论】:
-
不知道为什么它只返回一半,但你不需要
+1in[0:len(l)//2+1]。您能否在问题中添加merge实现?
标签: python algorithm sorting merge mergesort