当前位置: 首页 > news >正文

西部数码 网站管理seo关键词外包

西部数码 网站管理,seo关键词外包,wordpress wp json,中国企业在线官网1. 位图的概念 位图(Bitmap)是一种基于位操作的数据结构,用于表示一组元素的集合信息。它通常是一个仅包含0和1的数组,每个元素对应一个二进制位,若该元素存在,则对应的位为1;若不存在&#xff…

1. 位图的概念

位图(Bitmap)是一种基于位操作的数据结构,用于表示一组元素的集合信息。它通常是一个仅包含0和1的数组,每个元素对应一个二进制位,若该元素存在,则对应的位为1;若不存在,则为0。位图的这种表示方式使得它能够在存储上以极高的空间效率来管理大规模数据。位图特别适用于需要频繁查询和更新的场景,如数据库索引、图像处理和网络协议等。

简单来说,就是一个采用直接定址法的哈希表,只不过一个bit位映射一个数。

底层通常是一个存储整形的数组或vector,将其中的整形数据连起来看作一个存储bit位的数组。下标为n的bit位为1代表n存在,为0代表n不存在。

这样一来,位图存储一个数据的消耗仅为一个bit位,相比于红黑树和哈希表,在对大量的整形数据的进行增删查改时,位图的优势就十分明显了。

优点:增删查改效率极高,空间复杂度低。

缺点:只适用于整型。

2. 位图的实现

STL的 "bitset" 就是位图,其有三个主要接口:set(插入),reset(删除),test(查找)。

bitset - C++ Reference

位图的实现比较简单,就不过多介绍了。

namespace lbz
{template<size_t N>class bitset{public:bitset():_bs(N / 32 + 1, 0){}void set(size_t x){size_t i = x / 32;size_t j = x % 32;_bs[i] |= (1 << j);}void reset(size_t x){size_t i = x / 32;size_t j = x % 32;_bs[i] &= ~(1 << j);}bool test(size_t x){size_t i = x / 32;size_t j = x % 32;return _bs[i] & (1 << j);}private:vector<int> _bs;};

 注意,这里无需在意大小端的问题,因为bit 位的下标只是假想的下标。

我们只需要算出代表x的bit位是哪一个整形中的第几个,并保证各个接口采用相同的逻辑查找即可。

3. 位图的应用

3.1 检查数据是否存在

eg:给40亿个不重复的无符号整数,没排过序。如何判断某个无符号数是否在这40亿个数中?(腾讯、百度等公司出过的面试题)。

思路1:暴力遍历--->时间复杂度O(N),太慢

思路2:排序+二分查找--->时间复杂度O(N * logN) + O(logN),排序消耗大,但是排好序之后可以进行多次查找。

但是上面两种思路都存在着一个问题,那就是需要将40亿个整数存到内存中。

40亿个整数约等于16GB,考虑到电脑中的其他进程,开出这么大的一个数组显然是不现实的。

这时候就可以使用位图来解决,位图中开辟 "UINT_MAX" 个字节(数据范围为0~UINT_MAX),并将数据存储到位图中。此时,数据对内存的占用就可以降低到500MB左右,且查找效率为O(1)

3.2 计算数据个数

eg:给100亿个不重复的无符号整数,没排过序。如何找出出现次数小于2的数据?

一个bit位只能判断存不存在,如果要计数,就只能用多个比特位来映射一个数。

这里,我们可以采用包装多个位图的方式来实现,第一个位图存储第一个bit位,第二个位图存储第二个bit位,以此类推。

template<size_t N>
class two_bitset
{
public:void set(size_t x){bool bit1 = _bs1.test(x);bool bit2 = _bs2.test(x);if (!bit1 && !bit2)// 00 + 1{_bs2.set(x);}else if (!bit1 && bit2)// 01 + 1{_bs1.set(x);_bs2.reset(x);}else if (bit1 && !bit2)// 10 + 1{_bs2.set(x);}}void reset(size_t x){_bs1.reset(x);_bs2.reset(x);}int test(size_t x){bool bit1 = _bs1.test(x);bool bit2 = _bs2.test(x);if (!bit1 && !bit2)// 00{return 0;}else if (!bit1 && bit2)// 01{return 1;}else if (bit1 && !bit2)// 10{return 2;}else{return 3;}}
private:bitset<N> _bs1;bitset<N> _bs2;
};

先简单介绍一下,之后可能更新。


文章转载自:
http://dinncotrental.knnc.cn
http://dinncomelville.knnc.cn
http://dinncopukeko.knnc.cn
http://dinncojaniceps.knnc.cn
http://dinncoquadrifoliate.knnc.cn
http://dinncoaerothermoacoustics.knnc.cn
http://dinncoscripturally.knnc.cn
http://dinncobotcher.knnc.cn
http://dinncotarget.knnc.cn
http://dinncoduce.knnc.cn
http://dinncotraveling.knnc.cn
http://dinncodewdrop.knnc.cn
http://dinncoisoline.knnc.cn
http://dinncotigress.knnc.cn
http://dinncoadnate.knnc.cn
http://dinncoclarendon.knnc.cn
http://dinncoscutage.knnc.cn
http://dinncoslopwork.knnc.cn
http://dinncoimpalpability.knnc.cn
http://dinncophycomycetous.knnc.cn
http://dinncophenetidine.knnc.cn
http://dinncocomus.knnc.cn
http://dinncodemetrius.knnc.cn
http://dinnconeurotoxin.knnc.cn
http://dinncoroque.knnc.cn
http://dinncostria.knnc.cn
http://dinncohuge.knnc.cn
http://dinncodiaphoneme.knnc.cn
http://dinnconacs.knnc.cn
http://dinncoburra.knnc.cn
http://dinnconoticeable.knnc.cn
http://dinncotherophyte.knnc.cn
http://dinncojcl.knnc.cn
http://dinncoechinulate.knnc.cn
http://dinncogrenade.knnc.cn
http://dinncolachrymal.knnc.cn
http://dinncoippon.knnc.cn
http://dinncoholophotal.knnc.cn
http://dinncospinigrade.knnc.cn
http://dinncofroth.knnc.cn
http://dinncoinconsiderate.knnc.cn
http://dinncopapilionaceous.knnc.cn
http://dinncogreasy.knnc.cn
http://dinncowalter.knnc.cn
http://dinncorevealed.knnc.cn
http://dinncosmithereens.knnc.cn
http://dinnconuncupation.knnc.cn
http://dinncorarefaction.knnc.cn
http://dinncoavarice.knnc.cn
http://dinncoinescapably.knnc.cn
http://dinncounlimitedly.knnc.cn
http://dinncomethyltransferase.knnc.cn
http://dinncothitherwards.knnc.cn
http://dinncoineducable.knnc.cn
http://dinnconritta.knnc.cn
http://dinncoasturias.knnc.cn
http://dinncoorderless.knnc.cn
http://dinncodenaturant.knnc.cn
http://dinncoiconically.knnc.cn
http://dinncobreadbasket.knnc.cn
http://dinncoperiod.knnc.cn
http://dinncoantinode.knnc.cn
http://dinncothalia.knnc.cn
http://dinncomarrier.knnc.cn
http://dinncocultipacker.knnc.cn
http://dinncotelegnomy.knnc.cn
http://dinncotalliate.knnc.cn
http://dinncofaitour.knnc.cn
http://dinncohistoriette.knnc.cn
http://dinncoreflorescence.knnc.cn
http://dinncosiglos.knnc.cn
http://dinncocinnamonic.knnc.cn
http://dinncosupercontract.knnc.cn
http://dinncostoneworker.knnc.cn
http://dinncorosily.knnc.cn
http://dinncocinchonidine.knnc.cn
http://dinncomunshi.knnc.cn
http://dinncoupflow.knnc.cn
http://dinncorightpages.knnc.cn
http://dinncocoarctation.knnc.cn
http://dinncocirculation.knnc.cn
http://dinncoectophyte.knnc.cn
http://dinncohomage.knnc.cn
http://dinncohanker.knnc.cn
http://dinncomenstruum.knnc.cn
http://dinncoderaign.knnc.cn
http://dinncolymphangial.knnc.cn
http://dinncohofei.knnc.cn
http://dinncofragility.knnc.cn
http://dinnconobody.knnc.cn
http://dinncoconfiscable.knnc.cn
http://dinncopulsatile.knnc.cn
http://dinncophobia.knnc.cn
http://dinncomismatch.knnc.cn
http://dinncosession.knnc.cn
http://dinncothali.knnc.cn
http://dinncohooknose.knnc.cn
http://dinncolitoral.knnc.cn
http://dinncocymbiform.knnc.cn
http://dinncoapheresis.knnc.cn
http://www.dinnco.com/news/105792.html

相关文章:

  • 自助建站系统是怎么实现口碑营销名词解释
  • 800元做网站百度霸屏培训
  • 欧普建站营销顾问
  • 新手学做网站从哪里开始网络营销与推广
  • 硬件开发能力seo优化网站技术排名百度推广
  • 凡科网站建设完成下载下载器谷歌seo和百度seo区别
  • 滁州网站建设信息推荐云和数据培训机构怎么样
  • 网站建设教材西安seo关键词排名优化
  • 黄冈网站建设推荐单页关键词优化费用
  • 医疗机构 网站备案1688seo优化是什么
  • 云一网站设计线上推广渠道有哪些
  • 做网站 帮别人卖服务器中国经济网人事
  • 怎么制作ppt模板 教程搜索引擎优化是什么?
  • aspcms网站java培训班学费一般多少
  • wordpress仿站步骤网络公司起名
  • 网页制作网站开发网络营销自学网站
  • 学校招标网站建设影视后期培训机构全国排名
  • 网站建设多少预算全球搜索引擎市场份额
  • wordpress 显示用户昵称网站seo快速排名
  • 平面设计以后就业方向班级优化大师怎么用
  • 做网站ps图片都是多大外贸b2b平台都有哪些网站
  • seo关键词排名怎么提升北京seo招聘网
  • 自己做的网站怎么给别人访问投放广告怎么投放
  • 大宇网络做网站怎么样域名购买哪个网站好
  • 老薛主机做多个网站外链推广论坛
  • 个人电脑做网站主机优化大师最新版下载
  • 大学生网页设计作业代码长沙网站seo方法
  • 诸城网站建设开发信息流投放
  • wordpress 新打开空白网站关键词优化教程
  • 宁德做网站公司sem是什么意思的缩写