在文件上使用二进制搜索

时间:2012-06-26 23:49:51

标签: ruby

我有一个包含几千行的巨大文件,每行包含一个数字和一个字符串。数字已按顺序排列。

到目前为止,我将每行扫描为一个数组并将它们推入另一个数组,然后我可以在这个2D数组上执行二进制搜索。这是正确的方法吗?在效率方面呢?

感谢

1 个答案:

答案 0 :(得分:0)

为什么要做的工作多于必要的工作?

假设数字是增量的,并且它们实际上只是数组的索引

我可以看到3种选择。

只需访问该文件,然后

  1. 二元搜索,一种在线提供的标准明确定义的算法。

  2. 如果您的字符串被定义为相同的长度,那么您只需要使用file =((数字长度+字符串长度[+ CRLF])*索引)中的公式字节地址索引到所需的行 - 1如果您使用Carriage Return& amp;用于分隔行的换行符 - 1因为文件从字节ZERO开始而不是一行

  3. 将它们加载到DataBase管理系统并使用INDEX访问字符串

  4. 选择是你的,索引更快,DBMS更多工作但更容易管理尝试SQLite,二进制搜索使用更多时间