高手们!请进来指点!! ( 积分: 100 )

  • 主题发起人 伊天仇
  • 开始时间

伊天仇

Unregistered / Unconfirmed
GUEST, unregistred user!
我在设计这样一个程序。该程序会把一个有十几万条记录(该记录的包括三四个字段:车牌号(由汉字,字母和数字组成)、车牌颜色(用数字代表不同颜色)、日期、ID号)的结构化文件读入内存,每当程序接收到外面传来的一个信息(该信息包括:车牌号、车牌颜色),就到此内存块中查找对应的车牌号和车牌颜色,得到对应的日期)。请问:
1。应该采用哪中方法(算法)使能够在最短的时间内长到对应的记录。
2。因在查找的过程中该结构化文件的记录有可能增加,这时就要求内存块的记录必需同步增加,再进行查找,这又应该采用哪种方法,才能做到效率又高,又能避免漏查呢?
 
我在设计这样一个程序。该程序会把一个有十几万条记录(该记录的包括三四个字段:车牌号(由汉字,字母和数字组成)、车牌颜色(用数字代表不同颜色)、日期、ID号)的结构化文件读入内存,每当程序接收到外面传来的一个信息(该信息包括:车牌号、车牌颜色),就到此内存块中查找对应的车牌号和车牌颜色,得到对应的日期)。请问:
1。应该采用哪中方法(算法)使能够在最短的时间内长到对应的记录。
2。因在查找的过程中该结构化文件的记录有可能增加,这时就要求内存块的记录必需同步增加,再进行查找,这又应该采用哪种方法,才能做到效率又高,又能避免漏查呢?
 
我认为不须要什么算法,也无将记录需载入内存,直接用SELECT查询即可。十几万条记录不算什么,随便一个大型数据库(SQL Server,Oracle,Sybase等)都可以轻松搞定。最主要是的做好索引,查询一条记录很快的,相应可以满足响应时间要求。
 
对第一做好主键和索引查询速度快,第二如果用sql多把查询或者更新语句放在存储过程里,第三查询的时候尽量字段内容详细,详细查询比粗略查询速度快
 
两们可能没有看清楚的我问题。我说的十几万条记录是放在一个结构化文件里,而不是放在一个数据库的表中的,所以没法利用数据库的查询方法来查询。。
 
是什么文件,能说清楚点吗?
 
SQL.MDF不也是一个文件吗?
难道兄台要用TEXT文本不成?....[:D]
 
就是一个结构化文件。该文件的记录结构在上面已经写得很清楚了。。
 
为什么不用数据库,嵌入式下的吗?
用文件很麻烦的,随便一个数据库的效率都会比你的高
 
可以考虑使用clientdataset.
把外部的文件读入clientdataset内存表中,再来处理。
 
ini文件很快,要么就在文件头自己做一个索引例如2~4个字节id号什么的然后后面写上对应的地址(4~8字节)地址也就是数据在文件里的偏移量,文件开头就有一个固定索引的话只需要遍利索引然后跳到文件的相应地方就可以读到数据,速度很快的
 
-1 是 真
 
“读入内存”:速度是快了,但是占用内存空间巨大!
“结构化文件”:还是数据库效率高啊!哪怕是桌面型的Access,Paradox等也比一般文件容易管理和查询,维护。
 
还是没有这个能力解决啊!
 
如果自己设计数据结构,最好用单词树,然后查找只要O(1)时间了
如果已经用线性结构存贮了的话 先排一下序
要查找的话就用二分法 O(lgN) 十几万也很快
不过推荐先把组织成单词树(B—tree差不多)空间也节约
关于树和二分 找算法书看吧
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
顶部