使用分而治之和递归合并两个排序数组

问题描述 投票:0回答:1

我正在尝试合并两个不同大小的排序数组,使用递归以“分而治之”的方式。 我知道解决问题的可能性有很多,但我想使用递归和分而治之的方式来编写代码。

此外,虽然我的代码适用于某些情况,但它不适用于其中一个数组的大小为 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))
    
algorithm median
1个回答
-1
投票
我是新来的,这是我屏幕上显示的问题之一,我的回答看起来太不专业,但这是对这里互相帮助的社区的赞扬,这并不是很幸运,我知道这个地方太晚了,不管这里有多好!

© www.soinside.com 2019 - 2024. All rights reserved.