如何处理这样的要求?(关键是要速度快!) (30分)

  • 主题发起人 主题发起人 xysir001
  • 开始时间 开始时间
X

xysir001

Unregistered / Unconfirmed
GUEST, unregistred user!
有这样一个程序:用组合的方法,每新组成一个数据(字符串),就判断该字符串是否包含在另一个string类型的字符中Str(我现在是这样处理的)。如果包括,则不保存;如果不包括,则添加进Str中。但问题是:随着Str中数据的越来越大(最大能超过100万行),判断起来也所花时间也越来越多。请问:有什么方法能提高查询速度?有没有其他更好的方法?

我用了老外编的QStrings函数,感觉速度还是不能满足我的要求。即:
if Q_PosStr(SubStr,SouStr,0)=0 then 保存。
谢谢!!!
 
还是自己编一个函数吧
如果要在10000个string中判断是否有一个与当前string相同的确会花点时间
算法考虑:
每个子string保存成数组或列表,然后每个子string有一个或几个特征值,
比如长度、字节累积值、奇偶校验值等,判断时先判断特征值是否一样,这样
可节省时间。
 
我曾经用TStrings试验了一下,比string类型还慢:相同数据,保存为string类型用了1秒多,而保存为TStrings类型,用了9秒多。这还是在组合数较少的时候(C(26,4)时)
To nicai_wgl:
由于新产生组合的数据与所要比较的每一行数据长度,字节都是一样的。如:
AAAAAAA
BBBBBBB
CCDDEEF
...
 
可是累计和或奇偶校验值应该不一样啊
A+A+A+A+A+A <> B+B+B+B+B+B <> C+C+C+c+C+c
.......
 
去找个哈希链表的类吧,外面多的是,绝对可以满足你的要求,100万的数量级别,速度绝对不是问题,太简单了,解决后记得给分给我
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部