我正在尝试合并两个不同大小的排序数组,使用递归以“分而治之”的方式。 我知道解决问题的可能性有很多,但我想使用递归和分而治之的方式来编写代码。
此外,虽然我的代码适用于某些情况,但它不适用于其中一个数组的大小为 1 的情况。我很乐意就如何修复此基本情况的代码提供建议。我可以看到问题来自代码中的前两个“if”。但如果我删除它们,我将不会返回递归树的叶子,因此它不适用于其他情况。
import math
def medianOfTwo(L1, L2, l1, h1, l2, h2):
if (h1 == l1): return L1[l1]
if (h2 == l2): return L2[l2]
medL1 = math.floor((l1+h1)/2)
medL2 = math.floor((l2+h2)/2)
if(L1[medL1] == L2[medL2]):
return L1[medL1]
if(L1[medL1] < L2[medL2]):
return medianOfTwo(L1, L2, medL1, h1, l2, medL2)
else:
return medianOfTwo(L1, L2, l1, medL1, medL2, h2)
#ar1 = [1, 2, 3, 4, 12]
#ar2 = [0, 7, 8, 11]
ar1 = [1, 2, 3, 4]
#ar2 = [7, 8, 11, 12]
ar2 = [0]
print(medianOfTwo(ar1, ar2, 0, len(ar1)-1, 0, len(ar2)-1))