c - 大文件搜索算法

标签 c algorithm

我需要帮助来决定用于搜索大文件的搜索算法。 这就是我在做什么。假设文件包含时间范围 t1 到 t2。 (t2>t1)

我需要获取以下的文件偏移量 (fseek):

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

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

Naive 版本是遍历整个文件的行并在当前时间为 t3 时返回 fseek,从返回的 seek 开始并在当前时间为 t4 时进行迭代,返回第二个 fseek

现在假设文件是​​ 100GB,我需要在文件中迭代以获得 2 秒的周期。 然后这个逻辑变得太昂贵了 CPU 和文件系统。寻找更好的解决方案。使用的语言是C。 行目前是固定大小的,但我想展望 future 并处理一些不使用固定大小长度的算法。

最佳答案

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

关于c - 大文件搜索算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3206395/

相关文章:

algorithm - 基本加密算法

algorithm - 用一根线划分矩阵中的点

c - EXC_BAD_ACCESS 调用 malloc 函数时

algorithm - 在排序数组中找到一对总和为 K 的整数

arrays - 有没有更优雅的方式来做到这一点?

algorithm - 简化表达式 k/m%n

c - 为什么此 if 行出现段错误?

java - 使用C/C++/Java获取基本硬件信息

c - 如何在linux中将UID/GID映射到用户名/组名

c - 我不断收到有关传递参数使指针从整数而不进行强制转换的警告