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
我的想法:由于内存限制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
相关文章推荐
- 50人员工的科技博客虎嗅网申请上市了
- 互联网服务应用协议设计
- imageNet2015,港中大汤晓鸥教授团队超越谷歌破互联网物体检测世界纪录
- 有一种互联网思维叫做战略性跟风
- 【转】一个互联网项目即将结束的软件测试经验总结
- 替穿不好西装的“互联网国家队”说句话
- 2015迎国庆互联网趋势报告
- 互联网金融技术
- iClap助力移动互联网企业实现规范化管理
- 互联网装修第一篇
- 互联网大佬
- 电商、营销、移动互联网等专业词汇大全
- 根据多年经验整理的《互联网MySQL开发规范》
- 把互联网界的大牛——王煜全老师开出的书单和大家分享一下
- 移动互联网(一)短信和彩信界面开发包
- 殊途同归 苹果、谷歌、微软雷同的背后
- 地球上的互联网大佬都来了,为啥缺了谷歌?
- 互联网专车高补贴开始“退烧”
- 城市拥堵加剧,都是互联网快车惹的祸?
- 滴滴优步神州掀新一轮融资大战