Bitmap海量数据快速查找去重代码示例
给你一个文件,里面包含40亿个整数,写一个算法找出该文件中不包含的一个整数, 假设你有1GB内存可用。对于40亿个整数,如果直接用int数组来表示的大约要用4010^84B=16GB,超出了内存要求,这里我们可以用bitmap来解决,bitmap基本思想是一位表示一个整数,比如我们有6个数据:。假设bitmap容量为8,当插入7时 bit[7]=1,以此类推bit[3]=1bit[1]=1bit[5]=1……这样一个位代表一个数据,那40一个数据大概要4010^8bit = 0.5GB,满足内存要求。下面是完整测试代码:现在我们来看如果内存要求是10MB呢?实际上我们并不保存这些数,而是给每一个块设置一个计数器。最后我们找到这个块中第一个为0的位,其对应的数就是一个没有出现在该文件中的数。
用户评论