早教吧作业答案频道 -->其他-->
在一个文件中有10G个整数,乱序排序,要求找出中位数。从10G个数中找到中数在一个文件中有10G个整数,乱序排列,要求找出中位数。内存限制为2G。不妨假设10G个整数是64bit的。2G内存可
题目详情
在一个文件中有10G个整数,乱序排序,要求找出中位数。
从10G个数中找到中数
在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。
不妨假设10G个整数是64bit的。
2G内存可以存放256M个64bit整数。
我们可以将64bit的整数空间平均分成256M个取值范围,用2G的内存对每个取值范围内出现整数个数进行统计。这样遍历一边10G整数后,我们便知道中数在那个范围内出现,以及这个范围内总共出现了多少个整数。
如果中数所在范围出现的整数比较少,我们就可以对这个范围内的整数进行排序,找到中数。如果这个范围内出现的整数比较多,我们还可以采用同样的方法将此范围再次分成多个更小的范围(256M=2^28,所以最多需要3次就可以将此范围缩小到1,也就找到了中数)。
这是腾讯的一个笔试题,想知道“将64bit的整数空间平均分成256M个取值范围”是什么意思。。求教。。
从10G个数中找到中数
在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。
不妨假设10G个整数是64bit的。
2G内存可以存放256M个64bit整数。
我们可以将64bit的整数空间平均分成256M个取值范围,用2G的内存对每个取值范围内出现整数个数进行统计。这样遍历一边10G整数后,我们便知道中数在那个范围内出现,以及这个范围内总共出现了多少个整数。
如果中数所在范围出现的整数比较少,我们就可以对这个范围内的整数进行排序,找到中数。如果这个范围内出现的整数比较多,我们还可以采用同样的方法将此范围再次分成多个更小的范围(256M=2^28,所以最多需要3次就可以将此范围缩小到1,也就找到了中数)。
这是腾讯的一个笔试题,想知道“将64bit的整数空间平均分成256M个取值范围”是什么意思。。求教。。
▼优质解答
答案和解析
首先说明一点,64bite的整数足以存储10G这个数值。
然后换个思维理解,比如有20个数,数的范围是(1-10),而内存只能装入两个数。用内存里的这两个数统计范围为(0,5),(6,10)的数出现的次数,比如内存里两个数的取值是4,16,显然中位数(姑且认为是求第10位)出现在(6,10)中的第6出现的数。
这个时候,内存两个数统计范围变成(6,8),(9,10),统计这两个区间内范围出现的数的次数,如果是8,8,中位数是在(6,8)中第6次出现的数。
第三次统计,内存两个数统计的范围是(6,7),(8),如果是7,1,那么所求的中位数还是(6,7)第6次出现的数。
第四次统计,内存两个数为(6),(7),如果内存第一个数>=6,则所求数为6,否则所求数为7。
这样应该能理解了吧。
然后换个思维理解,比如有20个数,数的范围是(1-10),而内存只能装入两个数。用内存里的这两个数统计范围为(0,5),(6,10)的数出现的次数,比如内存里两个数的取值是4,16,显然中位数(姑且认为是求第10位)出现在(6,10)中的第6出现的数。
这个时候,内存两个数统计范围变成(6,8),(9,10),统计这两个区间内范围出现的数的次数,如果是8,8,中位数是在(6,8)中第6次出现的数。
第三次统计,内存两个数统计的范围是(6,7),(8),如果是7,1,那么所求的中位数还是(6,7)第6次出现的数。
第四次统计,内存两个数为(6),(7),如果内存第一个数>=6,则所求数为6,否则所求数为7。
这样应该能理解了吧。
看了 在一个文件中有10G个整数,...的网友还看了以下:
数的分类,大家看看有什么漏下的自然数:即正整数,从0、1、2、3、4、5、6.负数:负数是数学术语 2020-05-23 …
最容易拿分的问题:请你从0到100中选择一个整数,如果所选择的数字最接近所有数字的平均数的一半的话 2020-05-23 …
最容易拿分的问题:请你从0到100中选择一个整数,如果所选择的数字最接近所有数字的平均数的一半的话 2020-05-23 …
某号码锁有6个拨盘,每个拨盘上有从0到9共十个数字,当6个拨盘上的数字组成某一个6位数字密码时锁才 2020-06-26 …
从0,2,3,6,7中选3个不重复的数字,组成不能被5整除并有因数6的三位数从0,2,3,6,7中 2020-06-30 …
某号码锁有6个拨盘,每个拨盘有从0到9共十个数字,当6个拨盘上的数字组成某一个数字号码(开锁号码) 2020-07-08 …
如图,热阴极A受热后向右侧空间发射热电子,它们的初速率有从0到v各种可能值.与A相距L的地方有竖直 2020-07-16 …
求“从0到无穷大的和”应该怎么算?RT,还有,∞从0到无穷大的和=∑=n=0 2020-07-31 …
如图所示,热阴极A受热后向右侧空间发射电子,电子质量为m,电量为e,电子的初速率有从0到υ的各种可能 2020-11-01 …
关与数字的问题24个字母中的两个字母随意组合,比如AB,BA,AC,CA,AZ,AX,XD...可以 2021-01-10 …