位图,就是Bit_map,是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。
由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。
我们来看一个具体的例子:
设我们要对0-7内的5个元素(4,7,2,5,3)排序(假设这些元素没有重复),那么我们就可以采用Bit_map的方法来达到排序的目的。
要表示8个数,我们就只需要8个Bit(1Bytes)
(1)首先我们开辟1Byte的空间,将这些空间的所有Bit位都置为0
(2) 遍历这5个元素,首先第一个元素是4,那么就把4对应的位置1,因为是从零开始的,所以要把第五位置为1。
然后再处理第二个元素7,将第八个位置为1,,接着再处理第三个元素,一直到最后处理完所有的元素,将相应的位置为1。
(3) 我们现在遍历一遍Bit区域,将该位是1的位编号输出(2,3,4,5,7),这样就达到了排序的目的。
其实我们可以理解为把计数排序用的统计数组的每个单位缩小成bit级别的布尔数组
我们来实现位图:
#include<iostream>
using namespace