由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问题请教
相关主题
请问C#里面,如何对N个数组设置循环访问?雨天哭求呀。
请教一个2维动态矩阵的问题再问:关于多维数组的malloc
[合集] 一个vector的问题[合集] C++delete数组遇到的问题
Java数组怎么样能参数传递 (转载)求集合包含,最快的算法是什么?
搞不定,不得不问,一维数组跟二维数组的问题急,从一个文本文件读取不同数据,分别写入多个文本文件中的指定行,取代原来的数据。
新手学JAVA,遇到一个难题,有大侠愿意帮忙吗?c++读写多个大文件的问题
请教一个算法问题 (转载)请教 C/C++ 指向多维数组的指针的问题
请教一个pointer的问题perl二维数组一问
相关话题的讨论汇总
话题: 数组话题: 文件话题: word话题: 维放话题: 文本文件
进入Programming版参与讨论
1 (共1页)
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的数据都没有问题的。

1 (共1页)
进入Programming版参与讨论
相关主题
perl二维数组一问搞不定,不得不问,一维数组跟二维数组的问题
如何将若干已升序排序好的数组合并在一起,并仍然是升序?新手学JAVA,遇到一个难题,有大侠愿意帮忙吗?
关于java的二维数组的问题请教一个算法问题 (转载)
[合集] 一道C++的面试题,双黄包求答案 (转载)请教一个pointer的问题
请问C#里面,如何对N个数组设置循环访问?雨天哭求呀。
请教一个2维动态矩阵的问题再问:关于多维数组的malloc
[合集] 一个vector的问题[合集] C++delete数组遇到的问题
Java数组怎么样能参数传递 (转载)求集合包含,最快的算法是什么?
相关话题的讨论汇总
话题: 数组话题: 文件话题: word话题: 维放话题: 文本文件