什么建站公司好,网站流量转换,网站的领券商城怎么做,搜狗短网址生成海量数据去重
一个文件中有40亿条数据#xff0c;每条数据是一个32位的数字串#xff0c;设计算法对其去重#xff0c;相同的数字串仅保留一个#xff0c;内存限制1G.
方法一#xff1a;排序
对所有数字串进行排序#xff0c;重复的数据传必然相邻#xff0c;保留第一…海量数据去重
一个文件中有40亿条数据每条数据是一个32位的数字串设计算法对其去重相同的数字串仅保留一个内存限制1G.
方法一排序
对所有数字串进行排序重复的数据传必然相邻保留第一个去除后面重复的数字串即可。
缺点是排序时间复杂度太高并且显然是需要内排序外排序一起的。优化的方法有扫雪机模型。
方法二哈希表 文件分割
当然还有一种方法取32位的前n位做一个哈希然后把哈希值一样的数据串放到一个文件里面。然后每次将一个文件load到内存中然后对这个文件中的数据做个排序 or 哈希去重即可。
这样的缺点是磁盘IO较多。
方法三位图
用512MB的unsigned int数组来记录文件中数字串的存在与否形成一个bitmap。
然后从0到2^32-1开始遍历如果flag为1表明该数存在。这样就自动实现了去重。
这个思路很好了。