| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 795 人关注过本帖
标题:[求助]如何加速大容量文本文件自我比较,高手请进
取消只看楼主 加入收藏
tiger92061
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-10-29
收藏
 问题点数:0 回复次数:5 
[求助]如何加速大容量文本文件自我比较,高手请进

已知一个100万行文本文件,每行固定有m个字符,文本文件中任意两个文本行内容都不重复,现要找出符合如下条件的结果:

1、m>n,n不为0,如果某文本行与另一文本行有且只有n个字符不同,则称此两文本行n互异。

2、若某文本行在文件中有且只有i个n互异文本行,则保留此文本行。

3、找出所有存在i个n互异文本行的文本行。


我的做法是:

1、把100万行文本文件复制一份,设为B,源文件为A;

2、读入A的第k行,与B中逐行比较,比较100万次后看是否n互异文本行数为i,是则保留。

3、k从1到100万循环。

这样要作100万*100万次计算,时间耗费很久,我2.8G的机子要30分钟左右,可是我看网络上有的人实现同样的功能只要1分钟,甚至10几秒。

请高手指点下如何能实现10几秒的速度,是要多线程吗?

懂得话给个算法思路,要不给个相关链接,多谢了!!!!

搜索更多相关主题的帖子: 文本文件 容量 
2005-10-29 23:16
tiger92061
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-10-29
收藏
得分:0 
顶上去

2005-10-30 11:35
tiger92061
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-10-29
收藏
得分:0 
怎么都没人懂?

2005-10-31 19:59
tiger92061
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-10-29
收藏
得分:0 
你这个算法我还是不大明白,

1。 1234567890 2 5 计为 2
2。 1234567800 1 5 计为 2
3。 3456789012 计为 0
4。 3456789456 计为 0
5。 1234567877 1 2 计为 2

如果1。为1234567891的话,那么2。就有2个8个字符相同的,它们是1234567890和1234567877。可是1234567890没计算进去。只比较后面的话,前面有互异的不就漏掉了吗?还有红色部分的5、5、2是什么意思?

忘了说明一下,比较是按位进行的,1234567891和1234567800是2互异,3456789012和1234567890是10互异。

[此贴子已经被作者于2005-11-1 0:18:07编辑过]


2005-11-01 00:06
tiger92061
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-10-29
收藏
得分:0 

对于第n行来说只比较n+1.......100万行,那么前面1....n-1行怎么办,关键是我不理解如何把前面比较过的结果记在n行上。难道是构造一个含100万个元素的数组来记录?有点明白了,我要仔细再想一想。

[此贴子已经被作者于2005-11-1 0:33:45编辑过]


2005-11-01 00:28
tiger92061
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-10-29
收藏
得分:0 
还是没想明白如何把前面比较过的结果记在n行上,斑竹再指点下

2005-11-02 21:42
快速回复:[求助]如何加速大容量文本文件自我比较,高手请进
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026236 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved