您的位置:首页 > 业界新闻

2014 网易互联网在线笔试题

2015-09-28 18:36 465 查看
称号:有四个文件,在那里每个文件100万家int类型整数。内存限制1M,如何最有效地获得四个文件的交汇点数量,的数量是出现在所有四个文件数?

我的想法:由于内存限制1M。那是,1024*1024字节,比文件共享存储的整体数量较少100 0000*4,所以文件里的数没办法一次装到内存。採用外部排序、归并等方法实现。

详细:

1、最開始应该是对每一个大文件进行外部排序,也就是n次从大文件里取出一部分数在内存中进行高速排序或堆排序,然后将结果存入小文件里,存入小文件的同一时候去重。

2、然后对n个小文件进行归并排序,将已排序结果存入新的大文件。这样能得到四个没有反复数的新的大文件;

3、接下来对这四个已排序的文件。设为f1,f2,f3,f4进行类似归并操作,两个指针一開始指向f1与f2的头部,值不相等的“丢掉”,相等的存入新的文件f12,f3,f4进行一样操作得到f34文件,再对这两个文件进行上诉操作,得到终于结果文件result,同一时候能够得到其个数。

我发了个帖子收集各位的算法,有的用bitmap实现。有的用多趟遍历实现,各位能够看看还有什么优化的方法。
http://bbs.csdn.net/topics/390889640
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: