bitmap算法
1、位图是一种非常常用的结构,在数据压缩方面有广泛应用;
2、如下图,假设是一个整型数据在内存中占用的的32位,从低位到高位,每一位分别对应十进制数字0~31,每bit上值为0或1,表示对应十进制数字是够存在;
3、
优点:效率高,占用内存少;
缺点:无法对存在重复的数据进行排序或者查找,但是也可以有2bitmap。
4、如何将十进制转换为对应的bit位?(仅考虑无符号整数)
①、首先求其在整型数组中的index,我们知道 a[0]对应0~31, a[1]对应32~63,...。所以,假设十进制数N,对应数组下标为index = N / 32 即可;
②、然后,寻找其对应数组中整数的哪一位?bitLoc = N % 32;
③、利用对a[i]进行移位操作,判断相应为是0或1,从而判断相应整数是否存在。
5、拓展:也可以利用2bit对应一个整数,这样00,01,10,11四中情况就可以表示多种情况。
不要让执行的勤奋掩盖思考的懒惰!