【发布时间】:2019-04-07 12:19:11
【问题描述】:
编写一个名为
Merge3的纯递归 Python 函数,该函数将三个数字列表作为输入,每个列表都按升序排序,并通过以适当的升序合并三个列表中的元素来输出一个排序列表。例如,Merge3([1,2,72,108],[3,4,94,103],[45,67,456])应该返回一个列表[1,2,3,4,45,67,72,94,103,108,456]。
我能够为两个列表编写一个版本,但我正在努力想出一种紧凑的方法来为三个列表执行此操作。请参阅下面的示例:
def Merge2(A, B):
if A == []:
return B
if B == []:
return A
if A != [] and B != []:
if A[0] > B[0]:
return [B[0]] + Merge(A, B[1:])
else:
return [A[0]] + Merge(A[1:], B)
print(Merge2([1, 2, 6, 7],[3, 4, 8, 9]))
对于我缺少的三个列表,是否有一种简单的方法可以做到这一点?我觉得这将需要大量额外的检查,这会使程序相当长。你能想出一个简洁的方法来为三个列表执行此操作吗?
【问题讨论】:
-
如果您可以为两个列表做到这一点,从技术上讲,您已经为三个列表做到了。由于两个列表返回另一个排序列表,您只需应用两个列表函数两次 - 首先在 A 和 B 上获取 D,然后在 D 和 C 上。
标签: python sorting recursion computer-science