我们中的许多人都知道mergesort中的merge子例程。在这里,在python中:
def merge(left, right):
result = []
i ,j = 0, 0
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
有没有办法在没有附加数组的情况下编写合并(在这种情况下没有result
)?我已经尝试利用字符串$ s = xy =(y ^ Rx ^ R)^ R $(其中R表示反向)这一事实无济于事。
这种就地版本的合并将假设两个输入子阵列是相邻的。 (第一个数组可以来自[i,j],第二个数组可以来自[j,k],用于3个输入索引i,j和k。)
顺便说一下,我愿意使用python以外的语言,比如C ++或Java。