由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Linux版 - 【包子】请教算法--2列数字比较
相关主题
A bash question!请推荐一本适合生物信息的算法的书 (转载)
vi如何对100行重复编辑命令?这个perl的简单小程序为什么不work?
awk问题求救数据出力怎么version control?
求助本版牛人我这种情况,如何确定备份完成并且完整?
关于内核的一点问题讨论做题:find kth smallest number in two sorted arrays at
请教一个算法问题 (转载)webbew SQL问题解法3 -- 还在远古时代总么办
怎么把一个.iso file mount到指定的dir ?养老院人事 SQL难题解法综述 -- 申精
请教一个问题请问怎么让矩阵中非对角线位置上的元素变零
相关话题的讨论汇总
话题: ind2话题: hash话题: ind1话题: maxvalue话题: ind3
进入Linux版参与讨论
1 (共1页)
i***r
发帖数: 1035
1
有2列随机数字(不重复),很大比如2个G,排序之后,我想找出所有共同的数字,比
如A开头可能是:
1
2
3
7
10
74
100
349
。。。
B是:
2
3
6
78
89
90
120
。。。
他们相同的部分是
2
3
所以我需要2边同时往下读,然后不停地track谁大。实际上我的data里面,B总是比A增
加的快,所以我写了2个for loop,对每一个A,看B里面有没有相同的,找到了就记下
位置,作为下次loop的起点。
我不是科班出身,觉得自己的算法很烂(目前发现work不错,没有问题),相信有优化
算法,故请教大家
谢谢!
附上我的code结构,注意不要笑岔气了:
ind3=1;
for ind1=1:length(A)
for ind2=ind3:length(B)
if (A==B)
blahblah
end
ind3=ind2;
end
end
g******9
发帖数: 70
2
ind1 = 1
ind2 = 1
while ind1 < length(A) and ind2 < length(B)
if (A==B)
blahblah
ind1++
ind2++
else if (A < B)
ind1++
else
ind2++
end
end

【在 i***r 的大作中提到】
: 有2列随机数字(不重复),很大比如2个G,排序之后,我想找出所有共同的数字,比
: 如A开头可能是:
: 1
: 2
: 3
: 7
: 10
: 74
: 100
: 349

x*z
发帖数: 1010
3
common = set(A) & set(B)

【在 i***r 的大作中提到】
: 有2列随机数字(不重复),很大比如2个G,排序之后,我想找出所有共同的数字,比
: 如A开头可能是:
: 1
: 2
: 3
: 7
: 10
: 74
: 100
: 349

i***r
发帖数: 1035
4
这个好!没想到loop还可以这样写。。。。
多谢!!

【在 g******9 的大作中提到】
: ind1 = 1
: ind2 = 1
: while ind1 < length(A) and ind2 < length(B)
: if (A==B)
: blahblah
: ind1++
: ind2++
: else if (A < B)
: ind1++
: else

i***r
发帖数: 1035
5
谢谢。不过我的数据不只有数字,我还需要把同一行的其他值打出来
另外你这个common是哪个语言的function?

【在 x*z 的大作中提到】
: common = set(A) & set(B)
x*z
发帖数: 1010
6
谢包子,这个是Python里面的set,我理解你只要找出两个set里面
共同的部份,然后爱怎么处理怎么处理,这个可以省掉你排序的部
份。

【在 i***r 的大作中提到】
: 谢谢。不过我的数据不只有数字,我还需要把同一行的其他值打出来
: 另外你这个common是哪个语言的function?

w****w
发帖数: 521
7
Memory够的话,hash一下就出来了。不够的话得分批。
#!/usr/bin/env python
smallfile = file("small.txt","r")
largefile = file("large.txt","r")
outfile=file("out.txt","w")
HASHSIZE=10*1024*1024
maxvalue=0
hash={}
while 1:
line=largefile.readline()
if not line:
break
v=int(line.strip())

if v>maxvalue:
hash={}
while 1:
r=smallfile.readline()
if not r:
break
maxvalue=int(r.strip())
hash[maxvalue]=1
if len(hash)==HASHSIZE:
break

if len(hash)==0:
break
if hash.has_key(v):
outfile.write("%s\n"%(v,))
1 (共1页)
进入Linux版参与讨论
相关主题
请问怎么让矩阵中非对角线位置上的元素变零关于内核的一点问题
算法问题 (转载)请教一个算法问题 (转载)
【包子求助】20M*20M的loop怎么搞? (转载)怎么把一个.iso file mount到指定的dir ?
哈希表能用来排序吗???CISCO的问题。请教一个问题
A bash question!请推荐一本适合生物信息的算法的书 (转载)
vi如何对100行重复编辑命令?这个perl的简单小程序为什么不work?
awk问题求救数据出力怎么version control?
求助本版牛人我这种情况,如何确定备份完成并且完整?
相关话题的讨论汇总
话题: ind2话题: hash话题: ind1话题: maxvalue话题: ind3