gpt4 book ai didi

python - python中的排序错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:45 25 4
gpt4 key购买 nike

def merge_lists(all_lst):
def merge(left,right):
results = []
while left and right:
if min(left) < min(right):
results.append(min(left))
left.remove(min(left))
else:
results.append(min(right))
right.remove(min(right))
results.extend(left)
results.extend(right)
return results
if all_lst == []:
return []
elif len(all_lst) == 1:
return merge(all_lst[0],[])
else:
return merge_lists([merge(all_lst[0],all_lst[1])] + all_lst[2:])

all_lst = [[2, 7, 10], [0, 4, 6], [3, 11],[123,88,7],[12,32,4,6,7],[34,22,1],[3]]
print(merge_lists(all_lst))
>>> [0, 1, 2, 3, 3, 4, 4, 6, 6, 7, 7, 7, 10, 11, 12, 22, 32, 34, 123, 88]

我的代码按升序对数字进行排序。但为什么 88 不在正确的位置?我的代码有什么问题吗?

最佳答案

问题出在您的 merge 函数中。考虑这个输入:

[0, 2, 3, 4, 6, 7, 10, 11] [123, 88, 7]

一段时间后,结果[0, 2, 3, 4, 6, 7, 7, 10, 11]离开[]right[123, 88] -- 现在你退出 while 循环并且只需将 result 扩展为所有未排序的 right 即可!

要解决这个问题,您可以同时对 leftright 进行排序,然后您就不需要再使用 min 了,因为第一个元素将始终是最小的。或者,如果您不能使用内置排序函数,请继续从 leftright 中选择最小元素,直到 两者 都用完。

关于python - python中的排序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22455088/

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