我正在做一个实习生,编写一个程序来进行基因匹配。
例如: 文件“ A”包含一些基因类型的字符串。 (原始数据未排序) rs17760268 rs10439884 rs4911642 rs157640 rs1958589 rs10886159 rs424232 ....
文件“ B”包含上述的90万个rs号(也未排序)
我的程序现在可以得到正确的结果,但是我想使其更加高效。
是否有可以应用到该程序的算法?
顺便说一句,我将尝试使我的程序进行多处理,看看它是否具有更好的性能。
pseudocode:
read File "A" by string, append to A[]
A[] = rs numbers from File "A"
read File "B" by string
for gene_B in file_B_reader:
for gene_A in A:
if gene_A == gene_B:
#append to result[]
答案 0 :(得分:1)
我认为不需要先进行任何排序。
总计:O(n + m)
答案 1 :(得分:0)
从描述中看来,您希望result[]
包含rs
和A
(也称为Intersection)中的B
个字符串。
您的算法是O(n*m)
,但是您可以通过首先对两个文件进行排序(O(n*logn)
进行基于比较的排序),然后同时从两个文件中读取并增加其中的位置,来轻松地改善这一点具有较低的当前rs
数字,并同时向result[]
添加匹配项。
答案 2 :(得分:0)
尽管您的解释还不清楚,但我想您是将A值附加到列表中。而是使用字典,您可以更高效地查找A。