数据结构之位图

位图是一种使用bit位来标记元素Value的高效存储方法。通过位操作,可以节省存储空间。例如,对0-7内的5个元素(4,7,2,5,3)排序,只需1Byte空间。初始化所有位为0,然后按顺序标记元素对应的位为1。遍历位图,输出值为1的位编号即可完成排序。位图可视为计数排序的位级版本。" 128405251,11845339,C++实现:模拟多维整型数组设计与实现,"['数据结构', '算法', 'C++']
摘要由CSDN通过智能技术生成

位图,就是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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值