大数据中位数怎么运算_大数据查找中位数

前两天同学面试遇到的一道题,大数据怎么找出中位数。大数据 --> 所有数据不能一下子读入内存

中位数 --> 需要遍历所有数据

1. 题目

在一个大文件中有100亿个32位整数,乱序排列,要求找出中位数;内存限制为512M;请写出算法设计思路;

2. 基本知识b --> bit 比特,位(二进制中的位)

B --> Byte 字节,1个字节=8位,1B=8bit

K --> KB 千字节,1KB = 1024B

M --> MB 兆字节,1M = 1024KB = 1024*1024B

G --> GB 1GB = 1024MB

问题分析:

100亿个32位整数,那么占用内存为:100亿*32 b = 100亿*32/8 B = 100亿*32/8/1024 KB = 100亿*32/8/1024/1024 MB = 38146.9727 MB > 512M

所以肯定不能一次全部载入内存。

那么512M可以装多少个32位整数呢?512M=512*1024K=512*1024*1024B=512*1024*1024*8b=4294967296b

可存储32位整数:4294967296b/32b=134217728个,是1亿多个。

3. 设计思路

中位数需要遍历数据才能找出来,512M是我们可用的内存限制,每次只能载入1亿多个数据,100亿个数据,我们可以分成100次进行载入遍历。<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值