我有一个大文件(比如10兆字节)和MD5哈希流(其中包含重复项),我有一个10MB的内存(非常有限)和无限的硬盘空间。使用给定条件查找所有唯一散列(消除重复项)。请帮忙,这显然不是家庭作业问题
最佳答案
您可以使用外部排序算法(例如,使用polyphase merge sort)对散列进行排序,之后您只需遍历文件并跳过任何等于最新散列的散列
hash mostRecentHash;
while(fileHasHashes) {
temp = fileWithDuplicates.readHash();
if(!hashesAreEqual(mostRecentHash, temp)) {
mostRecentHash = temp;
fileWithoutDuplicates.writeHash(mostRecentHash);
}
}