爲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. 陣列的最後n個元素
- 3. 獲取陣列中兩個元素之間的所有元素
- 4. C#:在N×N矩陣中尋找最大m個元素的有效算法
- 5. Ruby:在2d陣列中獲取每個子陣列的第n個元素
- 6. 從斯卡拉陣列中刪除每個第N個元素
- 7. 如何從陣列中刪除每個第N個元素
- 8. numpy的:複製給定元素的列表/陣列中的每個1-d數組元素的n倍
- 9. 具體算法排序n個元素
- 10. O(log n)算法找到並排預排序列表中排名爲i的元素
- 11. Matlab的 - 快速減去[1×N個]從[M×N個]矩陣元素陣列
- 12. 比較陣列中的所有元素與另一個陣列
- 13. Javascript:使用陣列的每第n個元素
- 14. 接入子排列/打印第n個元素,每一個陣列
- 15. 獲取每個陣列的第n個元素中的陣列在JavaScript中有效地
- 16. 類型包含Coq中的N個元素的所有功能
- 17. 陣列中的每個元素注入到不同的陣列
- 18. 重新排列數組中的每一個第n個元素
- 19. 在單元陣列中找到前n個數值單元格
- 20. Prolog - 給出列表中的每個第n個元素
- 21. 2D陣列,其中每個元素是一個類元素
- 22. 在O(log n)中查找第k個最小元素
- 23. 從另一個陣列中排除一個陣列的元素
- 24. 在2D陣列中查找n個最大元素位置
- 25. 算法,從n個元素的列表中尋找組合
- 26. 排序列表,忽略每個第n個元素?
- 27. 找到n個元素的最大總和的陣列,使得不超過k個元素是相鄰
- 28. 列表形式的列表中的每個第n個元素
- 29. 描述O(n log n)算法以確定A的所有元素是否不同
- 30. 用n個元素填充一個n * n矩陣
http://www.geeksforgeeks.org/median-of-two-sorted-arrays/ –
謝謝@PeterdeRivaz –