s*******n 发帖数: 688 | 1 有一个文本文件,大概n行. 第二个文本文件里面有m个words.现在要求把第一个文件里
包含第二个文件里words的行挑出来删掉.怎么做速度最快阿? 文件比较大,速度是主要
问题.谢谢 | k****f 发帖数: 3794 | 2 看m有多大了。比较小的话,grep就足够了
【在 s*******n 的大作中提到】 : 有一个文本文件,大概n行. 第二个文本文件里面有m个words.现在要求把第一个文件里 : 包含第二个文件里words的行挑出来删掉.怎么做速度最快阿? 文件比较大,速度是主要 : 问题.谢谢
| f********o 发帖数: 863 | 3 第二个文件里的每个word,都要和第一个文件所有的行里所有词遍历一遍。
如果m和n非常大,这个好象快不了吧!
除非排序!但要先加工一下,需要将第一个文件中的所有的word一一取出,放入二维数组或者二维表,第一维放这个word,第二维放word所在的行号。然后将这个表或者数组按第一维排序。
将第二个文件里的word全部一一取出,放入一维数组或表进行排序!
将这两个数组或这两个表进行比较,如果match,就将那个二维数组的行号放入第三个数组中。待全部比较完后,对第三个数组(一维数组)再进行除重计算!
最后根据这个不重复的第三个数组中的行号数据,将第一个文件中的相关行删除! | s*******n 发帖数: 688 | 4 m,n都很大,百万级别的.我写了个c程序.就是傻傻的两个文件做对比,估计了一下,要好
多天.
痛苦死了.
【在 k****f 的大作中提到】 : 看m有多大了。比较小的话,grep就足够了
| s*******n 发帖数: 688 | 5 谢谢,不过没看懂. 不是搞计算机的,我search了一下,建个hash table会不会快一点?
数组或者二维表,第一维放这个word,第二维放word所在的行号。然后将这个表或者数
组按第一维排序。
数组中。待全部比较完后,对第三个数组(一维数组)再进行除重计算!
【在 f********o 的大作中提到】 : 第二个文件里的每个word,都要和第一个文件所有的行里所有词遍历一遍。 : 如果m和n非常大,这个好象快不了吧! : 除非排序!但要先加工一下,需要将第一个文件中的所有的word一一取出,放入二维数组或者二维表,第一维放这个word,第二维放word所在的行号。然后将这个表或者数组按第一维排序。 : 将第二个文件里的word全部一一取出,放入一维数组或表进行排序! : 将这两个数组或这两个表进行比较,如果match,就将那个二维数组的行号放入第三个数组中。待全部比较完后,对第三个数组(一维数组)再进行除重计算! : 最后根据这个不重复的第三个数组中的行号数据,将第一个文件中的相关行删除!
| f********o 发帖数: 863 | 6 这样行了吧!放入数组以后排序!呵呵
【在 s*******n 的大作中提到】 : 谢谢,不过没看懂. 不是搞计算机的,我search了一下,建个hash table会不会快一点? : : 数组或者二维表,第一维放这个word,第二维放word所在的行号。然后将这个表或者数 : 组按第一维排序。 : 数组中。待全部比较完后,对第三个数组(一维数组)再进行除重计算!
| N***m 发帖数: 4460 | 7 这种问题似乎是操作系统限定的,想快也快不了。
最直接的就是做两个循环,把第一个文件的不符合条件的行输出到另外一个文件。
记得words要先排序。
【在 s*******n 的大作中提到】 : 有一个文本文件,大概n行. 第二个文本文件里面有m个words.现在要求把第一个文件里 : 包含第二个文件里words的行挑出来删掉.怎么做速度最快阿? 文件比较大,速度是主要 : 问题.谢谢
| s*******n 发帖数: 688 | 8 谢谢大伙儿,用hash table解决问提了.
【在 N***m 的大作中提到】 : 这种问题似乎是操作系统限定的,想快也快不了。 : 最直接的就是做两个循环,把第一个文件的不符合条件的行输出到另外一个文件。 : 记得words要先排序。
| k****f 发帖数: 3794 | 9 几百万,小case啦
你把m稍微处理一下,所有单词做个suffix tree,
然后用n的每个单词,对suffix tree查询
时间和空间消耗基本就是linear的。
几个G的数据都没有问题的。
【在 s*******n 的大作中提到】 : m,n都很大,百万级别的.我写了个c程序.就是傻傻的两个文件做对比,估计了一下,要好 : 多天. : 痛苦死了.
| k******r 发帖数: 2300 | 10 对,suffix tree 应该是最好的办法。特别是数量级非常大的时候。
【在 k****f 的大作中提到】 : 几百万,小case啦 : 你把m稍微处理一下,所有单词做个suffix tree, : 然后用n的每个单词,对suffix tree查询 : 时间和空间消耗基本就是linear的。 : 几个G的数据都没有问题的。
|
|