早教吧作业答案频道 -->其他-->
在一个文件中有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个整数,...的网友还看了以下:
二次函数的一个小问题.如果f(x)=a,一根为负,一根在区间(1,2)内,则a的范围为.解的话是设 2020-05-13 …
已知函数y=f(x)和y=g(x)在[-2,2]的图像如图所示给出下列四个命题:①方程f[g(x) 2020-05-16 …
f(g(x))是什么意思?如果h(x)=4x?-16,f(g(x))=h(x),找函数f和g.f( 2020-06-08 …
设函数f(x),g(x)满足下列条件:(1)对任意实数x1,x2都有f(x1)•f(x2)+g(x 2020-06-12 …
一个小时内回答,如图,椭圆E:x^2/a^2+y^2/b^2=1(a>b>0)焦点为F1.F2,线 2020-06-21 …
已知f(x),g(x)都是奇函数f(x)>0的x∈(a,b),g(x)>0的解集是x∈(a/2,b 2020-07-30 …
(x,y)=(0,0)时,g(x,y)=0,它的二阶导数gyx(0,0)和gxy(0,0)等于多少 2020-08-01 …
高等数学:设函数g(x)在(负无穷到正无穷)上连续,且∫(0到1)g(x)dx=2,f(x)=见下 2020-08-02 …
(2012•荆州模拟)若规定符号“f”、“g”表示不同的两种运算.它对实数运算结果如下:f(0)=- 2020-11-12 …
函数极限问题设f(x)=g(x)/x,x不等于00,x=0且已知g(0)=g'(0)=0,g''(0 2020-12-08 …