0

我有这个包含几千行的巨大文件,每一行都包含一个数字和一个字符串。数字已经排好序了。

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

谢谢

4

1 回答 1

0

为什么做比必要的更多的工作?

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

我可以看到你有 3 个选择。

只需访问该文件,然后

  1. 二进制搜索,一种标准的、定义良好的算法,可在线获得。

  2. 如果您的字符串被定义为相同的长度,那么您只需要使用文件中的公式字节地址 = (( 数字长度 + 字符串长度 [ + CRLF ] ) * 索引) - 1 其中 CRLF 是可选的,如果您使用回车和换行来分隔行 - 1 因为文件从字节零开始而不是一

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

选择权在您手中,索引更快,DBMS 工作量更大但更易于管理尝试 SQLite,二分搜索使用更多时间

于 2012-06-27T00:11:46.100 回答