问题是这样的:假设我们有 N 台机器,并且每台机器存储并可以操作它的 N 个元素,那么,我们如何以最低的成本找到所有 N^2 个元素的中位数?
真的很困扰,希望得到大家的解答,谢谢!
对不起,我写得太简单了。每台机器中存储的元素是随机的,没有顺序。而成本包含I/O成本,以及机器之间的通信、RAM、时间等一切都应该考虑在内。我只想找到获得中位数的最有效方法。
这些是我提出的一些解决方案:
- 使用外部排序,如合并排序或其他方法,并找到中位数。
- 使用桶排序,将所有元素按照其值分成X个连续的桶,这样我们就可以决定中位数在哪个桶中。扫描桶,我们将得到中位数。
- 我认为在“算法简介”中的 O(N) 算法中找到第 k 个数应该在这里工作吗?
但是,所有这些解决方案仍然需要一台额外的机器来完成这项工作。我想知道是否有一种方法可以只使用这 N 台机器来获得中位数?
谢谢!