gpt4 book ai didi

algorithm - 统一文件访问

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:46:26 25 4
gpt4 key购买 nike

假设我有一个文件,每行包含一个词。它按字母顺序排序。我想编写一个程序来逐行处理文件中的每一行。但不在当前文件中的字母顺序中。在每一步中,处理后的行都应该大致均匀地分布在文件中。也就是说,已经处理的行的行号应该从第0行到第max行合理分布。

占用空间越小越好,因为文件可能非常大。并通过确定性方法为答案加分,因此可以保存当前位置并从上次离开的地方继续。理想的答案仅将总行数和当前行作为输入,并将下一行作为输出。它还描述了一种将行号映射到文件位置的有效方法。

鼓励使用任何编程语言的示例,并附上解释!

最佳答案

如果每行的长度不同,我看不出如何解决仅通过行号查找特定行的问题。[如果你有足够的 RAM,你可以迭代文件一次并创建一个索引数组,每行从这里开始。]

但是如果您只想以与文件中的顺序接近的顺序遍历行,您可以这样做:

N : Number of lines in the file
p : big prime number which is no divisor of N
(e.g. take one that is much bigger than N)
l : number of the last line read

nextLineNumberToRead= (l+p) % N

这将遍历所有行。

附言以非线性方式读取文件会大大降低文件读取的性能,因为存储设备的缓存已针对处理线性访问进行了优化,而且许多存储设备(如磁盘驱动器)都是为线性访问而设计的。

关于algorithm - 统一文件访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20972024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com