在一个包含1亿条记录的大文件中搜索一条完整记录时,我会使用哪种算法理论?

时间:2019-06-30 01:37:56

标签: algorithm search

最近,我遇到了一个面试问题,

  

一个日志文件包含1亿条记录,如何设计有效的搜索文本算法来降低内存使用量和时间成本。

     

每个记录格式为:时间戳(8位)\ tid_number(15位)\ trecording_content

     

给出关键字(exp:id_number或时间戳记),您必须返回完整的行记录信息。每个id_number的前缀8位数字相同,每个时间戳的前缀6位数字相同。

我想使用与二叉树相关的树算法。后来,我搜索了一些答案,有人建议使用反向索引搜索。但是我不知道要牺牲内存和时间成本,有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果有人问我这个问题,我将首先提出问题以查找有关问题域的更多信息。一些开始的问题:

  • 记录是否按特定顺序排列?
  • 记录是否全部相同长度或可变长度?
  • 记录长度是否有一定范围?

听起来索引在这种情况下(日志文件)似乎没有用,所以我不会讨论与索引有关的问题。

对于日志文件,时间戳似乎是正确的。这样一来,您就可以使用二进制搜索,而二进制搜索可能会因长度可变的记录而变得复杂。

如果按固定的时间间隔添加记录,以使时间戳记是文件中偏移的近似线性函数,则可以通过基于线性插值进行估计来改善二进制搜索-google 插值搜索