我有这个包含几千行的巨大文件,每一行都包含一个数字和一个字符串。数字已经排好序了。
到目前为止,我将每一行作为一个数组扫描并将它们推入另一个数组,然后我可以在这个二维数组上执行二进制搜索。这是正确的方法吗?在效率方面呢?
谢谢
我有这个包含几千行的巨大文件,每一行都包含一个数字和一个字符串。数字已经排好序了。
到目前为止,我将每一行作为一个数组扫描并将它们推入另一个数组,然后我可以在这个二维数组上执行二进制搜索。这是正确的方法吗?在效率方面呢?
谢谢
为什么做比必要的更多的工作?
假设数字是递增的,并且它们实际上只是数组的索引
我可以看到你有 3 个选择。
只需访问该文件,然后
二进制搜索,一种标准的、定义良好的算法,可在线获得。
如果您的字符串被定义为相同的长度,那么您只需要使用文件中的公式字节地址 = (( 数字长度 + 字符串长度 [ + CRLF ] ) * 索引) - 1 其中 CRLF 是可选的,如果您使用回车和换行来分隔行 - 1 因为文件从字节零开始而不是一
将它们加载到数据库管理系统中并使用 INDEX 访问字符串
选择权在您手中,索引更快,DBMS 工作量更大但更易于管理尝试 SQLite,二分搜索使用更多时间