当前位置: 技术问答>linux和unix
请教在范围内搜索的算法
来源: 互联网 发布时间:2017-05-21
本文导语: 我有一个格式是 241287936 241288191 Gujarat 241288192 241288703 Maharashtra 241288704 241289727 qita 241289728 241291263 Maharashtra 241291264 241291519 qita 241291520 241292031 Maharashtra 241292032 241294079 qita 241294080 241294591 Maharashtra 241294592 241294847 qita 这样...
我有一个格式是
241287936 241288191 Gujarat
241288192 241288703 Maharashtra
241288704 241289727 qita
241289728 241291263 Maharashtra
241291264 241291519 qita
241291520 241292031 Maharashtra
241292032 241294079 qita
241294080 241294591 Maharashtra
241294592 241294847 qita
这样的文件,有90万行。给定一些数字,如果数字m在第N行里面的第一数与第二个数之间,就打印出m和这一行。怎么写最快?
PS 把这个文件里的每一行放进数组里面要耗大量时间。我想规定每一行中每个数和地名的长度,把整个文件当成一个数组,然后直接用指针来进行二分法查询,就是不知道怎么实现。求指导
241287936 241288191 Gujarat
241288192 241288703 Maharashtra
241288704 241289727 qita
241289728 241291263 Maharashtra
241291264 241291519 qita
241291520 241292031 Maharashtra
241292032 241294079 qita
241294080 241294591 Maharashtra
241294592 241294847 qita
这样的文件,有90万行。给定一些数字,如果数字m在第N行里面的第一数与第二个数之间,就打印出m和这一行。怎么写最快?
PS 把这个文件里的每一行放进数组里面要耗大量时间。我想规定每一行中每个数和地名的长度,把整个文件当成一个数组,然后直接用指针来进行二分法查询,就是不知道怎么实现。求指导
|
每次计算出查找范围中中间一行的偏移量, 然后从指定偏移量中读取一行来比较就是了
|
或许可以将文件偏移作为索引进行二分查找