【发布时间】:2018-06-28 02:51:18
【问题描述】:
我试图理解在 O(log(n+m)) 中解决此问题的算法,其中 n 和 m 是数组的长度。我冒昧地发布了该算法解释的链接:
https://www.geeksforgeeks.org/median-of-two-sorted-arrays-of-different-sizes/
我很难完全消化这个算法背后的想法。我可以看到这个想法是将其中一个数组的长度减少到 1 或 2,然后应用基本情况。基本情况是有道理的,但我想知道是否可以省略 n = 2 的基本情况而只处理 n = 1。我也不了解其余情况部分。对我来说,这看起来很奇怪,我们必须将数组 B[] 从开头切到 idx。这很奇怪,因为 idx 可以等于 B[] 的长度,所以我们会忽略整个数组。
【问题讨论】:
-
你不明白二分搜索的工作原理吗?
-
-------------是的,二分搜索是通过将数据集减半来寻找事物的艺术。
-
所以看我们有 array a = "aaaaaaaaaa" array b = "bbbbbbbbbbbbbbbbbbbb" 如果我们合并它们并排序它会像这样 "abababbabababbbbababaaba",我们的目标是在每一步中采取最数组的中间部分,所以 "ababab[bababbabbbbab]abaaba"
-
我们想要 a1 和 a2、a1 和 b1、a1 和 b2、a2 和 b1、a2 和 b2,还是 b1 和 b2。所以我们有 6 种取一半元素的可能性,我们通过比较中间元素来决定,其中肯定是我们所有的中间元素
-
但是其中一些案例没有意义,所以我们可以跳过它们
标签: algorithm