algorithm - 从数据集中删除不适合内存的重复项?

标签 algorithm performance sorting

假设有一个字符串数据集不能全部放入内存,我们想要删除所有重复项。

我不是在寻找代码,而是希望有人能引导我完成这个。

如果我可以将整个数据集放入内存,我会对集合进行排序,然后遍历并删除元素(如果当前元素与前一个元素相同)。

在这个实际案例中,我考虑将数据集的每个可用“ block ”加载到内存中,对其进行排序,删除重复项,然后在每个 block 上迭代执行此操作。这看起来效率很低,而且只有在我可以将整个数据集放入内存以在最后一次迭代中删除剩余的重复项时它才有效。

建议?

编辑:我之前处理这个小问题的方法是在内存中维护一个哈希表,遍历可以放入内存的数据集的每个 block ,如果不适合则将字符串添加到哈希表存在,否则跳过它。我们可以做得更好吗?

最佳答案

我要找的是外部排序。

https://en.wikipedia.org/wiki/External_sorting

此外,我的问题与此重复: Efficient Out-Of-Core Sorting

关于algorithm - 从数据集中删除不适合内存的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36976424/

相关文章:

android - 如何按 Realm 对不区分大小写进行排序?

c# - 按特定项目对枚举类型列表的成员进行排序

performance - 衡量 MPI 通信成本的工具

java - 优化排序矩阵中第 N 个最大元素的代码

java - 在 GAE 中实现一致的响应时间?

performance - 使用 Cython 优化简单的 CPU 绑定(bind)循环并替换列表

javascript - 电子表格的 Javascript 对象中的输出数组

c++ - 将 minheap.top 移动到 maxheap.top,其中 maxheap.top <= minheap.top

algorithm - 使用高斯消除在 GF(2) 中查找矩阵的秩

algorithm - 使用小于给定数字的组合形成给定数字 x