gpt4 book ai didi

python - 为什么我不能以这种方式实现合并排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:21:26 26 4
gpt4 key购买 nike

我理解合并排序的工作原理是分而治之,你一直减半,直到达到可以在恒定时间内排序的点,或者列表只是一个元素,然后你合并列表。

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)

我有一个有效的合并实现,我检查它工作正常,但合并排序实现不起作用,它只返回列表的一半元素。

我在 Internet 上看到合并排序是使用 l & r 和 m = (l + r)/2 实现的。我的实现有什么问题?我正在递归地分割列表并合并。

最佳答案

问题是代码中的 +1,这里:

l1 = l[0:len(l)//2]
l2 = l[len(l)//2:]

用你的代码替换它就可以了

关于python - 为什么我不能以这种方式实现合并排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48003589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com