Advertisement

位图法和布隆过滤器

阅读量:

大数据量的排序和判重,可以用位图法和布隆过滤器

位图法:

将数值按顺序分布于二进制位的空间

采用位图法相对简单,并不需要复杂的操作步骤;具体来说,则只需运用基本位操作即可完成将数值转换到对应的数组索引任务。

该基本操作由s.get(n)计算得出,并与((arr[n/len] & (1<<(n% len))) != 0)进行比较。其中变量 len 代表所使用的存储类型长度,请注意此处采用整数运算符 >> 或相应位运算替代 >> 运算符以避免潜在的问题

arr[n/len]是定位到存储该数使用的二进制位值

(1<<(n%len))表示该值的二进制形式中某一位的位置信息。通过进行按位与运算即可确定该位置的值是否为零。如同判断一个数是否为奇数时使用n&1的结果不等于零。

代码:

复制代码
 package Bitmap;

    
  
    
 public class Bitmap {
    
     int[] bitArray;
    
     //掩码,用来代替求余操作
    
     int INT_MASK=(1<<5)-1;
    
     Bit

全部评论 (0)

还没有任何评论哟~