【发布时间】:2013-09-12 04:04:53
【问题描述】:
通过谷歌搜索几分钟,我知道了基本概念。
- 让 A、B 和 C 成为包含 n 个元素的排序数组。
- 在每个数组中选取中值,并将它们命名为 medA、medB 和 medC。
- 不失一般性,假设 medA > medB > medC。
- 数组 A 中大于 medA 的元素不能成为三个数组的中位数。同样,数组 C 中小于 medC 的元素也不能,因此这些元素将被忽略。
- 递归地重复步骤 2-4。
我的问题是,基本情况是什么? 假设有很多基本情况,我手动测试了几个小时的算法,但我找不到正确的基本情况。 此外,三个数组的长度在每个递归步骤中都会变得不同。即使三个数组的长度不同,第4步是否有效?
【问题讨论】:
-
当三个数组的长度都小于一个常数时,你可以蛮力找到中位数。也有可能两个数组的长度为 1,但您不能忽略第三个数组中的元素。在这种情况下,您可以修改二分查找来找到中位数。
标签: arrays algorithm sorting big-o median