一个大数据 的算法,求思路。

wangyangkobe 2013-06-10 10:12:19
一、两个整数数组各100亿条数据,已经排序,保存在磁盘上;内存10M,
1.如何取得交集?时间和空间效率分别是多少?
2.如果其中一个数组只有100条数据,如何优化算法取得交集?时间和空间效率分别是多少?
...全文
255 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
一楼写得精辟...4.5楼没看懂·····
lsjfdjoijvtghu 2013-06-11
  • 打赏
  • 举报
回复
我想到个方法,租台超级计算机
xiangzhihappy 2013-06-11
  • 打赏
  • 举报
回复
引用 4 楼 worldy 的回复:
难道我理解错了? 既然两个数组A,B都已经排序,那么分别取出各自的最小值和最大值,即可得到交集范围 然后分段取出比较 如果 A[i]>B[j] 则j++ 如果 A[i]<B(j) 则i++ 如果 A[i]=B(j) 则 ==>交集数,i++,j++ 一次扫描就可以
这个想法不错,学习了
worldy 2013-06-11
  • 打赏
  • 举报
回复
难道我理解错了? 既然两个数组A,B都已经排序,那么分别取出各自的最小值和最大值,即可得到交集范围 然后分段取出比较 如果 A[i]>B[j] 则j++ 如果 A[i]<B(j) 则i++ 如果 A[i]=B(j) 则 ==>交集数,i++,j++ 一次扫描就可以
此去依然 2013-06-11
  • 打赏
  • 举报
回复
第一个问题: 无论如何肯定要扫描一遍两个数组。A B两个数组根据大小移动指针。 A[i]<B[j] i++; A[i]==B[j] temp[p] = A[i]; i++;j++; A[i]>B[j] j++; 第二个问题可以先二分查找,然后回到第一个问题。
大尾巴猫 2013-06-10
  • 打赏
  • 举报
回复
第一种时间复杂度是O(n),辅助空间的复杂度是常数O(1) 第二种时间复杂度O(log n),空间复杂度O(1)
大尾巴猫 2013-06-10
  • 打赏
  • 举报
回复
用类似归并排序的方法吧,2个文件各扫描一次。 第2种似乎可以采用类似对半查找。

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧