如果您有十亿个数字和一百台计算机,那么找到这些数字的中位数的最佳方法是什么?
我的一个解决方案是:
如果我们m1 < m2 < m3 ...先进行合并Set1,Set2并在结果集中我们可以丢弃低于Set12(合并)中位数的所有数字.所以在任何时候我们都有相同大小的集合.顺便说一下,这不能以并行方式完成.有任何想法吗?
有没有办法找到未排序数组的中位数:1-没有排序它.2-不使用选择算法,也不使用中位数的中位数
我发现了许多类似于我的其他问题.但是解决方案,其中大部分,如果不是全部,都讨论了SelectProblem和MedianOfMedians
如何在列表排序后选择第二个最小元素?
使用此代码我收到错误,我不明白为什么.
object find_the_median {
val L = List(2,4,1,2,5,6,7,2)
L(2)
L.sorted(2) // FIXME returns an error
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
用于进行k选择的最坏情况O(n)算法
鉴于以下问题:
In an integer array with N elements , find the minimum k elements (k << N)
Run Code Online (Sandbox Code Playgroud)
你可以假设这N是一个很大的数字.
我在考虑最小堆,任何人都有更好的解决方案?
问候