如何快速找到两个几乎相同的文件之间的差异?

时间:2011-10-27 04:48:07

标签: c++ c algorithm data-structures comparison

如果您有两个主要相同的文件,其中包含1000条记录,您将如何编写代码来查找它们之间的差异。假设不允许使用unix / linux命令。

我的想法:

由于大多数条目都相同,我们可以对这两个文件的条目进行排序,然后逐个比较每个条目,例如: file1中的条目i与file2中的条目i相比较。它是O(n lg n),n是文件的大小。

有O(n)解决方案吗?

1 个答案:

答案 0 :(得分:3)

哈希表是你的朋友。

  1. 从文件1中获取记录。
  2. 哈希。
  3. 获取相应的内存地址。
  4. 将其设为1
  5. 对文件1中的所有记录重复。
  6. 对文件2中的所有记录重复,但添加2而不是设置为1.
  7. 现在您知道两个文件中存在哪条记录(值3),该文件仅存在于第一个文件中(值1),并且仅存在于第二个文件中(值2)。并且在线性时间。

    注意:如果您正在实现自己的哈希表,则必须根据需要处理增大表的大小以及冲突。我敢肯定,如果你能做到这一点,那么你就不会有这个问题,所以请使用图书馆。