代码之家  ›  专栏  ›  技术社区  ›  damir

大文件的搜索算法

  •  1
  • damir  · 技术社区  · 16 年前

    我需要帮助决定用搜索算法来搜索大文件。 这就是我要做的。假设文件由时间范围t1到t2组成(t2>t1)

    1. 时间t3大于t1
    2. 时间t4小于时间t2

      | ------| ---|----------------|
      
      t1      t3   t4              t2
      

    现在让我们假设文件是100GB,我需要迭代,而文件只得到2秒的周期。 然后这个逻辑就变得过于CPU和文件系统昂贵。寻找更好的解决方案。使用的语言是C。 线目前是固定大小,但我想展望未来,并处理一些算法,不使用固定大小的长度。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Mike Daniels    16 年前

    你可以使用 binary search 如果文件中的时间都已排序。如果文件中的记录具有固定宽度就更好了,但是即使没有,也可以通过一些工作来利用它。

        2
  •  0
  •   tsiki    16 年前

    由于这些值是固定宽度的,所以像二进制搜索或插值搜索之类的搜索听起来是最好的选择。另外,如果您计划使用这些大小级别(100GB)的文件,那么由于fseek的文件大小限制,您应该考虑使用fgetpos/fsetpos。