今天在查Bitmap位图资料的时候无意中发现了一个Bit-Map无重复数字的数组的排序算法,所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。
算法思想
32位机器上,一个整形,比如int a;在内存中占32bit,可以用对应的32个bit位来表示十进制的0-31个数,bitmap算法利用这种思想处理大量数据的排序与查询
优点:
- 效率高,不许进行比较和移位
- 占用内存少,比如N=10000000;只需占用内存为N/8 = 1250000Bytes = 1.2M,如果采用int数组存储,则需要38M多
缺点:
- 无法对存在重复的数据进行排序和查找
示例:
申请一个int型的内存空间,则有4Byte,32bit。输入 4, 2, 1, 3时:
输入4:
输入2:
输入1:
输入3:
思想比较简单,关键是十进制和二进制bit位需要一个map映射表,把10进制映射到bit位上