VB程序员博客

VB程序开发

八位数的电话号码 ,大概一千万 对应五个字符的 姓名
表结构:
八位数字,五位汉字
88888888,李白

怎么设计存储可以快速的,输入号码,就显示姓名

不用数据库 ,分段存储,谁能给出较快的代码

不用数据库就写在文件中了。
写在文件中后,一次读到内存中,用二分法查找。

存储在 list中!

改一下数据结构 改成:
88888887:xxx
88888888:xx
这样格式的…

窗体_load()
把所有信息写到 list

窗体内一个text  输入数字时 循环list = list.list(i) 前面8位 则 显示 list(i) ":" 后的数据
运行时 list 为隐藏

你可以把数据发给我! 窗体_load() 部分我可以几分钟时间就把字串改成代码形式发还给你!

可以CSDN 联系我
以前就用这样的方法 写过 进程查询 程序  现在没再弄这个了 不过其思路不错 适用LZ 所说情况

不过… 1千万… 应该会溢出的吧…

那么只有 把数据放在文本里 ..启动的时候把他们全部写到程序内..

因为数据太多 查询速度可能是个问题

LZ 把数据发给我实验看下吧!

me.email=cike_1111@163.com

发邮件后CSDN 通知下 我

一共13个字符,13字节
1000万条记录㗱3 = 130,000,000
如果全部读到内存中的话,那这个内存…………

不如这样吧,把你的文件以二进制的方式存放在一个文件中
这个文件中的头部分写一个索引结构,按照电话开头的数字做索引
例如我想找5字头的电话号码,索引结构中就记录从5开始的电话的字节位置,再按照电话号码第二位开始做索引……如此类推

用XML文件存储或在程序执行之前就读到内存中,建立个自己的类和集合,读到里面。

6楼能给个代码吗?我不太会用索引结构

目前这样的数据结构,空号不存储

全部不读入内存,文件操作

文件结构:
8位数字,五位汉字unicode
81234563汤姆
81242345敖德森.刘

谁能给一个,快速定位号码的完整算法   

1.输入      81234563      显示汤姆
2.输入      汤姆               
显示:
81234563   
81234xxx      电话号码可能有多个

分不够再加,麻烦请给完整代码,谢谢

http://topic.csdn.net/u/20080127/17/e8154112-fa0f-4f94-b445-39de41cb63eb.html里回答了,
直接写到文件里面,然后做电话号码与文件内部存放数据的位置之间的换算,举例说明:电话号码假如从10000000生效,那么,10000000对应的就是seek(0),
10000001(八位数字,五位汉字)对应的就是seek(14),虽然可能会出现空号,但是这样检索应该会很快把?而且不需要数据库的说
具体就是file.seek((带查找的电话号码 - 起始电话号码)㗥핦𝡦𕰦�𕿯𜉯𜛠
然后就可以file.read(lpbuf,单条数据长)了

对于空号的解决办法就是空号的位置用0×00填充,这样空号只是占个位子。只要读出的电话号码是0的话,就说明这个号码还未被使用

备注:文件打开并不会全部导入内存,也就是说,实际上最后读入内存的部分也就是file.read中的单条数据长了,只有14byte而已

不要意思,再补充一点,认为文件太大的话可以分多个文件存放,比如开头号码11放一个文件,12放一个文件,我想lz应该可以自己解决了吧?

将姓名按电话号码数字大小做向量排序?

写在ini文件里,读出时用API直接调出节点.