gpt4 book ai didi

java - 增加 n^2 次的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:43:49 24 4
gpt4 key购买 nike

好吧,我得到的代码基本上循环遍历 30,000 行文本,并且对于每一行,它遍历另一个文件中的 20,000,000 行文本以与之进行比较。

while(x.hasNextLine())
while(y.hasNextLine())

其中 x 有 30,000 行,y 有 20,000,000 行。显然,这需要永远。现在我知道了更好的算法,但我试图将一个字符串与另一个字符串进行比较,所以这有点困难。我在 x 中拆分了一个字符串,在 y 中拆分了一个字符串。如果 x 的第 1 部分和 y 的第 2 部分相等,我会递增并做一些其他的事情。通常,x 在 y 中出现几百次左右。

那么,有什么想法吗?我尝试在每次通过后删除 y 中的行,然后重写文件,以便每次它在第二个循环中通过 less 进行解析,但显然这在编写 >500MB 的文件时没有帮助。

最佳答案

如果我没看错,您正在从磁盘读取 20M 行 (500MB) 文件 30,000 次?

如果 30k 的字符串小到足以保存在内存中,您可以反转循环的内部/外部位,并且只遍历 500MB 文件一次。假设 DiskIO 是瓶颈,这将节省大量时间。

关于java - 增加 n^2 次的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31978027/

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