1. 10G文件,保存的都是数字,如何找最大的100个
设置一个100大小的数组,或者链表(有序的,比如说升序),初始尘昌逗都是预先读入的100个数字排序后的结果,然后每次从文件中读入一个数字跟这个100个迅洞数字比较,从小到大比较,比较过程中发现比某个小了就插入当前位置i,是插入不是替换,大循环完成以后数派卖组(链表)里面的100个数字就是最大的100 个数字了
btw:个人意见,比较烂,但肯定能实现;
2. java读取一个10G大小的文本文件,怎么才能快速的得到该文本文件里面长度最长的单词
没办法快速,无论如何,你10G 的内容必须得全部读一遍。
常规的面试中这个涉及到内存的使用,只能使用远远低于数据大小的内存去完成任务。
如果是排序,需要答蚂桥分组,结果转储,然后归并。
这里只要最长的一个,那就简单多了清猛。
定义一个变量放置最长的,逐行去读文件,比变量长的就物弯更新变量,读完文件结果就出来了。
3. 用2G的内存找到10G大小数组中的中位数有什么好的方法么
版上的答案大致是这样的:
假设待排序的整数时32bit,先用此大前4bit做“敏扒绝桶”,估计出最中间的“桶”,然后依次循环
直桥姿到找到中位数。
ps:这道是比较经典的ms面试题目
4. 10G数据,1G内存,如何排序
当数据量超过内存量,旁旦通过一般意义上的排序算法已经不能胜任排序工作了。我们需要借助于外存,保留我们排序的中间阶段。
(1)按可用内存的大小,把外存上含有n个记录的文件分成若干个长度为L的子文件,把这些子文件依次读入内存,并利用有效的内部排序方法对它们进行排序,再将排序后得到的有序子文件重新写入外存。
(2)对这些有序子文件逐趟归并,使其逐渐由小到大,直至得到整个有序文件为止。(归并过程需要用到败者树或最小堆和一个内存缓冲区)。
分别排序:根据内存1G,数据10G,我们将10G数运滑扰据切分成10份,通过内存调用磁盘的方式,每1G进行排序,排序结束后,我们会得到10个有序的数据数组。
归并:多路归并过程可以使用败者树或最小堆。为方便起见我还是用最小堆吧,原理是一样的。
内存中开辟一个大小为10的最小堆,和一个缓冲区(小于1G,不要太小)。
取10份排序好的数据的首位进入最小堆。则最小的数位于堆顶,移除堆顶元素并写入缓冲区,然后从移除元素的元素所属数组中的下一位进入最小堆,在次移除堆顶进入缓冲区...直到缓冲区满,缓冲区回写磁盘,清空缓冲区,再次将数据置入最小堆...
直到10份数据全部写完,然后将最小堆的元素按顺序回写磁盘即可。让让
5. 100亿个数,找出前10大的数(内存10G)100亿个数,找出前10亿大的数(内存10G)
中国数词单位的最大单位为10的72次方,100亿也就是10的9次方,剩下的楼主自己算去吧。
6. 如何使用256M内存对2G数据进行排序
首先说明一点,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。
7. 100亿个数,找出前10大的数(内存10G)
你倒数100亿前10个就好
8. 求助:oracle 10g 内存怎么分配 win2003 32bit
类似配置,我的设置是SGA=1G,PGA=600M,内存管理自动模式
9. 手机内存10g大概是多少
手机内存1G大约是1024m ,10G就是10240m啦~大约只能装下一个王者旁世荣有就没办肆启拍法继续运行啦~ 手机表示着10G内存,但我们实际用起来并不会能用到这么多,你只能用到7~6.5G的样子,还有有的手机比如小米,会通过互联网远程联系手机做升级系统,这样就会消耗空间,如果正好裂羡您平常不怎么深度使用手机,不会删除那些安装包,那您的手机的储存空间就会非常告急,正常情况下,没有游戏,光看几部电影用10G的手机还是基本够用的。