为O(n)的方法是合并两个列表并进行平均中间的两个元素。 但它可以进一步优化? 问题是否存在O(log n)解决方案?给定两个阵列,每个阵列包含n排序的元素,是有O(log n)的-time算法找到所有2n个元素的中值?
回答
您可以在O(log n)^ 2时间内使用嵌套二进制搜索来完成此操作。你对中位数和最高元素以及最低元素的两次猜测(你可以在两次比较中得到)。然后走中间。然后用两个二进制搜索找到中间的索引。这会告诉你,你的估计是过高还是过低,并迭代外部二分搜索。
事实上,它可能是一种解决方案,但不能满足需求。由于中位数必须位于两个中位数之间!可以单独使用二进制搜索(循环)吗? –
这对加速来说是个好主意。但是你仍然需要在另一个数组中找到任何建议答案的索引,即O(log N)。 –
感谢@MalcolmMclean,它帮助 –
- 1. floor(√2n)的O(log log n)算法?
- 2. C#:在N×N矩阵中寻找最大m个元素的有效算法
- 3. 如何从阵列中删除每个第N个元素
- 4. 从斯卡拉阵列中删除每个第N个元素
- 5. O(log n)算法找到并排预排序列表中排名为i的元素
- 6. Matlab的 - 快速减去[1×N个]从[M×N个]矩阵元素阵列
- 7. 比较阵列中的所有元素与另一个阵列
- 8. Javascript:使用阵列的每第n个元素
- 9. 接入子排列/打印第n个元素,每一个阵列
- 10. 获取每个阵列的第n个元素中的阵列在JavaScript中有效地
- 11. 类型包含Coq中的N个元素的所有功能
- 12. 阵列中的每个元素注入到不同的阵列
- 13. 重新排列数组中的每一个第n个元素
- 14. Prolog - 给出列表中的每个第n个元素
- 15. 2D阵列,其中每个元素是一个类元素
- 16. 在2D阵列中查找n个最大元素位置
- 17. 列表形式的列表中的每个第n个元素
- 18. 在matlab单元阵列中选择第n个元素
- 19. 指定python列表中的每个第N个元素
- 20. 获取两个阵列中具有不同值的元素
- 21. 算法以匹配序列在给定的n * m个矩阵
- 22. 基于位置获取阵列中的N个元素
- 23. 如何删除阵列的第n个元素MongoDB中
- 24. 在阵列到每个匹配元素
- 25. R - 每个第n个元素的快速行矩阵
- 26. 特殊的minHeap,如何打印O(n)中的所有n个元素?
- 27. MATLAB:比较两个阵列的所有元素
- 28. 用条件查找给定N的所有排列的算法
- 29. F#中有N个不同索引的序列取N个元素
- 30. 删除列表中的所有N个元素
http://www.geeksforgeeks.org/median-of-two-sorted-arrays/ –
谢谢@PeterdeRivaz –