首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算十亿个数字的中位数

计算十亿个数字的中位数

提问于 2018-03-27 22:47:55
回答 2关注 0查看 224

如果你有十亿个数字和一百台电脑,找出这些数字的中位数的最好方法是什么?

我拥有的一个解决方案是:

  • 在计算机之间平均分配设置。
  • 对它们排序。
  • 找到每组的中位数。
  • 将集合排序在中位数上。
  • 从最低位到最高位一次合并两组。

如果我们m1 < m2 < m3 ...先合并Set1Set2并且在结果集合中,我们可以丢弃所有低于Set12(合并)中位数的数字。所以在任何时候我们都有相同尺寸的套装。顺便说一下,这不能以平行的方式完成。有任何想法吗?

回答 2

Rom_z

发布于 2018-03-28 08:25:55

啊,我的大脑刚刚起步,现在我有一个明智的建议。如果这是一次采访,可能太晚了,但不要介意:

机器1将被称为“控制机器”,并且为了争论起见它要么从所有数据开始,并且以相同的包裹将其发送到其他99台机器,否则数据开始在机器之间均匀分配,并且它将1/99的数据发送给其他每个人。分区不必相同,只需关闭即可。

每个其他机器对其数据进行排序,并且这样做有利于首先找到较低的值。因此,例如快速排序,总是首先对分区的下半部分进行排序[*]。它会尽快将其数据写回控制机器(使用异步IO以继续排序,并且可能使用Nagle:试验一下)。

控制机器在数据到达时对数据执行99路合并,但丢弃合并的数据,只保留所看到的数值的数量。它将中值计算为第二十亿分之十五十十亿以上的平均值。

这受到“牛群中最慢”问题的影响。直到分类机器发送的每个小于中值的值都不能完成该算法。有一个合理的机会,一个这样的数值在其数据包中会很高。因此,一旦数据的初始分区完成,估计的运行时间就是排序1/99数据的时间并将其发送回控制计算机,并且控制读取1/2数据的时间。“组合”介于最大值和这些时间之和之间,可能接近最大值。

我的直觉是,通过网络发送数据比排序更快(更不用说只是选择中位数),它需要成为一个相当糟糕的快速网络。如果可以假定网络是瞬时的,例如,如果您有100个内核可以访问包含数据的RAM,则可能会更好。

由于网络I / O很可能会受到限制,因此可能会出现一些技巧,至少可以将数据传回控制机器。例如,不是发送“1,2,3,... 100”,也许分拣机器可以发送一个消息,意思是“100个值小于101”。然后控制机器可以执行一个修改合并,在该合并中,它找到所有这些最高范围值中的最小值,然后告诉所有分拣机器它是什么,以便他们可以(a)告诉控制机器如何许多值“低于”该值,并且(b)从该点继续发送它们的排序数据。

更一般地说,控制机器可以使用99个分拣机器玩一个聪明的挑战 - 反应猜谜游戏。

这涉及到机器之间的往返,但是,我的简单的第一个版本避免了这种情况。我真的不知道如何盲目估计他们的相对表现,而且由于取舍是复杂的,所以我认为在那里有比我想象的更好的解决方案,假设这是一个真正的问题。

[*]可用堆栈许可 - 如果您没有O(N)额外空间,您首先要做的部分选择受到限制。但是如果你有足够的额外空间,你可以选择,如果你没有足够的空间,你至少可以使用你必须削减的一些角落,通过在前几个分区中首先做一小部分。

小狼

发布于 2018-03-28 07:43:37

代码语言:txt
AI代码解释
复制
sort -g numbers | head -n 500000001 | tail -n 2 | dc -e "1 k ? ? + 2 / p"
和开发者交流更多问题细节吧,去 写回答
相关文章
SQL 计算中位数
笔者在 HackerRank 上的 SQL 编程挑战看到这题,这题有 96% 的提交成功率。实际上,使用 SQL 求中位数远远没那么简单。
白日梦想家
2020/08/06
2.3K0
Python计算中位数_用频率直方图求中位数
output 8.416666666666666 8.0 ModeResult(mode=array([8]), count=array([6]))
全栈程序员站长
2022/09/27
1K0
Python计算中位数 numpy.median
numpy模块下的median作用为: 计算沿指定轴的中位数 返回数组元素的中位数
chaibubble
2022/05/07
1.6K0
2011年计算机联考真题——寻找2个序列的中位数
思路: 设定两个升序序列分别为A与B,中位数分别为a和b。 1)如a=b,则即为所求,算法结束。 2)当a< b时,抛弃A的较小的一般和B的较大的一半,并且舍弃的长度必须相等。 3)当 a > b时,抛弃A的较大的一般和B的较小的一半,并且舍弃的长度必须相等。 重复复进行1,2,3过程,知道两个序列均只含一个元素为止,较小者即为所求。
AI那点小事
2020/04/20
3980
两个有序序列的中位数
已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A​0​​,A​1​​,⋯,A​N−1​​的中位数指A​(N−1)/2​​的值,即第⌊(N+1)/2⌋个数(A​0​​为第1个数)。
叶茂林
2023/07/30
3150
使用NiFi每秒处理十亿个事件
当客户希望在生产环境中使用NiFi时,这些通常是第一个提出的问题。他们想知道他们将需要多少硬件,以及NiFi是否可以容纳其数据速率。
大数据杂货铺
2020/04/21
3.4K0
使用NiFi每秒处理十亿个事件
LeetCode MySQL 571. 给定数字的频率查询中位数
在此表中,数字为 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 3,所以中位数是 (0 + 0) / 2 = 0。
Michael阿明
2021/02/19
7700
​LeetCode刷题实战571:给定数字的频率查询中位数
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2022/04/12
4670
​LeetCode刷题实战571:给定数字的频率查询中位数
“十亿个分子对抗COVID-19”的挑战将在大规模的超级计算支持下启动
在世界各地,超级计算中心已经迅速发展起来,并为COVID-19的研究打开了大门,这可能是历史上最统一的超级计算成果。现在,来自欧洲JEDI的一项新竞赛准备将门槛提高到更高,目标是招募多达100个团队来粉碎数十亿个分子,以寻找一种covid19治疗药物,并提供数百万欧元的奖金。在接受HPCwire的采访时,JEDI的创始人安德烈·勒塞克鲁-皮埃特利(Andre Loesekrug-Pietri)谈到了这一雄心勃勃的、以超级计算机为动力的挑战的结构和目标。
GPUS Lady
2020/05/07
4590
计算机中位数求和方法总结例题,众数与中位数典型例题「建议收藏」
《众数与中位数典型例题》由会员分享,可在线阅读,更多相关《众数与中位数典型例题(3页珍藏版)》请在人人文库网上搜索。
全栈程序员站长
2022/09/29
3770
寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
PHP开发工程师
2022/04/18
3050
寻找两个正序数组的中位数
r语言求平均值_r语言计算中位数
R中的统计分析通过使用许多内置函数来执行的,这些函数大部分是R基础包的一部分,并且它们将R向量与参数一起作为输入,并在执行计算后给出结果。
全栈程序员站长
2022/09/29
2.4K0
r语言求平均值_r语言计算中位数
寻找两个有序数组的中位数
https://leetcode.com/problems/median-of-two-sorted-arrays/
lucifer210
2019/08/21
2.7K0
寻找两个有序数组的中位数
算法-寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
堕落飞鸟
2023/04/25
4650
十亿节点大规模图计算降至「分钟」级,腾讯开源图计算框架柏拉图
Plato 开源地址:https://github.com/tencent/plato
机器之心
2019/11/15
1.5K0
十亿节点大规模图计算降至「分钟」级,腾讯开源图计算框架柏拉图
100亿个数中寻找中位数
在一个大文件中有100亿个32位整数,乱序排列,要求找出中位数;内存限制为512M;请写出算法设计思路;
小土豆Yuki
2022/12/01
3950
100亿个数中寻找中位数
十亿元背后的价值
我是来自腾讯 SNG 社交网络运营部,简称 DSNO(屌丝 NO.1)团队的一枚大龄女屌丝。这个命题想跟大家分享在腾讯运营成本优化的实战经验,并探讨精细化成本管理的价值是什么。下面这张图上半部分大家很
织云平台团队
2018/05/22
1.3K0
数字时代云计算与边缘计算的区别
边缘计算的兴起在很大程度上归功于每秒连接到互联网的物联网(IoT)设备的增加。传统上,物联网设备产生的数据被传输回中央网络服务器,通常位于数据中心。一旦数据被处理,进一步的指令就会被发送回网络边缘的设备。然而,这个系统也存在一些问题,因为数据从边缘设备返回中心处理需要更多的时间,这会给带宽带来很大的压力,从而将网络速度减慢到爬行状态。
CloudBest
2021/11/10
2.4K0
腾讯开源图计算框架 Plato:十亿级节点图计算进入分钟级时代
据介绍,Plato 可满足十亿级节点的超大规模图计算需求,并将算法计算时间从天级缩短到分钟级;而且在性能方面也处于领先,并打破了原本动辄需要数百台服务器的资源瓶颈。我们将本次开源项目 Plato 相关内容整理如下。
AI研习社
2019/11/18
1.9K0
腾讯开源图计算框架 Plato:十亿级节点图计算进入分钟级时代
4. 两个排序数组的中位数
请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。
张伦聪zhangluncong
2022/10/26
2680

相似问题

2024-12-12:找出唯一性数组的中位数。用go语言,给定一个整数数组 nums,找出唯一性数组并计算其中位数?

020

2021-11-03:数据流的中位数。中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间?

0126

写了个代码,目的是输入20个1-9的整数,然后求他们的平均值,中位数和众数?

1256

git的用户是个长串数字是个什么回事??

2737

如何看待安卓涉侵权Java,谷歌或赔偿甲骨文数十亿美元?

61K
相关问答用户
中建数科 | 技术总监架构部总经理擅长3个领域
擅长5个领域
公司公司公司公司公司公司 | 职务职务职务职务职务职务擅长3个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档