大量文本文件的数据检索,你试试用trie结构吧。这是一种“压缩”存储的结构,应该可以符合楼主的要求。
下面简述一下trie结构:
比如有字符串a,abc,abd,那么你的trie结构就是这样一棵树
a
b
c
d
每缩进一次表示下一级。
由于共同前缀的字符串多多,因此这棵所谓的“26叉树”“极”为不满,楼主试一下吧。
具体的代码容我找找呵 ^^
这样的问题在noi教学中属于基础问题,当你要看一个元素是否在一个集合中时,利用Hash散列表的效率最高。代码我已经写好了,复杂度:5000+5000。delphi5下通过:
program AB5000;
{$APPTYPE CONSOLE}
const
MaxVal = 30000;
var
a, b: array [0..5000] of Integer;
d: array [0..MaxVal-1] of Byte;
i: Integer;
begin
// 向数组a,b中填入随机数据。
Randomize;
for i:=0 to 5000 do
begin
a[i] := Random(MaxVal);
b[i] := Random(MaxVAl);
end;
// 清空Hash表
FillChar(d, 30000*Sizeof(Byte), 0);
// 构造数组a的Hash表
for i:=0 to 5000 do
Inc(d[a[i] mod MaxVal]);
// 在数组a的Hash表中查找数组b的元素
for i:=0 to 5000 do
if d[b[i] mod MaxVal]<>0 then
Write(b[i], ' ');
Writeln;
Readln;
end.