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

网站网站制作服务找广告商的平台

网站网站制作服务,找广告商的平台,高端的咨询行业网站策划,wordpress接入短信一、位图的引入 先来看下边一道面试题: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 经过我们之前的学习,我们可能会有以下的思路: 对这些数进行排序&#xff…

一、位图的引入

先来看下边一道面试题:

给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。

经过我们之前的学习,我们可能会有以下的思路:

  • 对这些数进行排序,再通过二分算法,查找这个数是否存在

  • 插入到unordered_set中,使用find函数查找是否存在

上述方法看起来还不错,二分查找算法时间复杂度为logN,而插入到unordered_set中时间复杂度为O(N),而查找时时间复杂度为O(1),但是都有一个问题就是要将空间不足,40亿个无符号整形,需要160亿字节的空间,大概就是16GB的空间,一般计算机的内促都是4G或者8G,所以空间不足,此时就有了位图的方法来解决:

数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以使用一个二进制比特位来代表数据是否存在的信息,如果二进制比特位为1,代表存在,为0代表不存在。比如:

对于上图来说,有一个整形数组,我们可以使用直接定址法对数组的数据进行映射,但是与之前不同的是,此时只是使用一个比特位来代表一个整形数据,当这个数存在时,比特位置1,不存在时,比特位置0,此时就可以大大节省空间资源,无符号整数只有2的32次方个,所以最多开2的32次方个空间,一个空间为一个比特,所以最终只需要512MB的空间。但是我们不能按照位来空间,最少必须一个字节,所以我们就每次开一个字节的空间,也就是8个比特位,将8位当做一个整体来处理,对要保存的数据除8就是第几个字节,对保存的数据模8就是在这个字节中的第几个位置。

二、位图的概念

所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。

那么位图还有哪些应用呢?

  • 快速查找某个数据是否在一个集合中

  • 排序 + 去重

  • 求两个集合的交集、并集等

  • 操作系统中磁盘块标记

位图模拟实现

一、构造函数

由于不能按位开空间,所以我们选择每次开一个字节的空间,由于有范围最大为N,一位关联一个数据,所以需要开N/8个字节的空间,但是有时可能不能整除,所以要开N/8+1个字节的空间。所以

直接在构造函数中开好空间:

bitset(){_bits.resize(N / 8 + 1,0);}

二、set,reset,test函数

set函数的作用是对位图中的某一位进行填充

i就表示是第几个字节,而j表示该位在该字节中的第几位,所以对1进行左移j位后与该字节按位或,按位或的作用时不论该位为0还是为1,都将该位变为1。

void set(size_t x){int i = x / 8;int j = x % 8;_bits[i] |= (1 << j);}

reset的作用是将某一位清空

同样的将要清空的那一位置为0,进行按位与,不论原本该位是0还是1,都将该位置0

void reset(size_t x){int i = x / 8;int j = x % 8;_bits[i] &= ~(1 << j);}

test的作用是检测位图中某一位是否存在

bool test(size_t x){int i = x / 8;int j = x % 8;return _bits[i] & (1 << j);}

三、代码测试

void test_bit_set1(){bitset<100> bs1;bs1.set(8);bs1.set(9);bs1.set(20);cout << bs1.test(8) << endl;cout << bs1.test(9) << endl;cout << bs1.test(20) << endl;bs1.reset(8);bs1.reset(9);bs1.reset(20);cout << bs1.test(8) << endl;cout << bs1.test(9) << endl;cout << bs1.test(20) << endl;}

四、完整代码

namespace tmt
{template<size_t N>class bitset{public:bitset(){_bits.resize(N / 8 + 1,0);}void set(size_t x){int i = x / 8;int j = x % 8;_bits[i] |= (1 << j);}void reset(size_t x){int i = x / 8;int j = x % 8;_bits[i] &= ~(1 << j);}bool test(size_t x){int i = x / 8;int j = x % 8;return _bits[i] & (1 << j);}private:vector<char> _bits;};void test_bit_set1(){bitset<100> bs1;bs1.set(8);bs1.set(9);bs1.set(20);cout << bs1.test(8) << endl;cout << bs1.test(9) << endl;cout << bs1.test(20) << endl;bs1.reset(8);bs1.reset(9);bs1.reset(20);cout << bs1.test(8) << endl;cout << bs1.test(9) << endl;cout << bs1.test(20) << endl;}


文章转载自:
http://intestable.rywn.cn
http://traditionalism.rywn.cn
http://tycoon.rywn.cn
http://torte.rywn.cn
http://bema.rywn.cn
http://protrusion.rywn.cn
http://lapidification.rywn.cn
http://edd.rywn.cn
http://waveless.rywn.cn
http://mephenesin.rywn.cn
http://labradorian.rywn.cn
http://dreadless.rywn.cn
http://karaya.rywn.cn
http://prosecutor.rywn.cn
http://autoaggressive.rywn.cn
http://tobruk.rywn.cn
http://platonize.rywn.cn
http://putrescence.rywn.cn
http://intermingle.rywn.cn
http://callao.rywn.cn
http://elamitic.rywn.cn
http://tinamou.rywn.cn
http://pneumectomy.rywn.cn
http://dripping.rywn.cn
http://plaintiff.rywn.cn
http://spessartite.rywn.cn
http://aspirate.rywn.cn
http://proton.rywn.cn
http://yacare.rywn.cn
http://euglena.rywn.cn
http://geist.rywn.cn
http://constitution.rywn.cn
http://abu.rywn.cn
http://preceptor.rywn.cn
http://gmt.rywn.cn
http://hedy.rywn.cn
http://etd.rywn.cn
http://filaceous.rywn.cn
http://putschism.rywn.cn
http://olfactometer.rywn.cn
http://adsum.rywn.cn
http://geoponic.rywn.cn
http://milkman.rywn.cn
http://pseudomyopia.rywn.cn
http://ganglionectomy.rywn.cn
http://enneagon.rywn.cn
http://romp.rywn.cn
http://haematopoietic.rywn.cn
http://sayst.rywn.cn
http://dicyandiamide.rywn.cn
http://remediless.rywn.cn
http://baseboard.rywn.cn
http://cv.rywn.cn
http://marbleize.rywn.cn
http://wreckful.rywn.cn
http://catecholaminergic.rywn.cn
http://yond.rywn.cn
http://overplay.rywn.cn
http://laundromat.rywn.cn
http://cateress.rywn.cn
http://deprecation.rywn.cn
http://batta.rywn.cn
http://pschent.rywn.cn
http://chevrette.rywn.cn
http://hoosegow.rywn.cn
http://revivalism.rywn.cn
http://satay.rywn.cn
http://exocrinology.rywn.cn
http://cocurricular.rywn.cn
http://dikereeve.rywn.cn
http://luau.rywn.cn
http://goblinize.rywn.cn
http://radiographic.rywn.cn
http://substitute.rywn.cn
http://subemployment.rywn.cn
http://tribulate.rywn.cn
http://assaultive.rywn.cn
http://legislatorship.rywn.cn
http://reptilarium.rywn.cn
http://wart.rywn.cn
http://saccharimeter.rywn.cn
http://stenotypist.rywn.cn
http://hypabyssal.rywn.cn
http://cotemporary.rywn.cn
http://unseriousness.rywn.cn
http://uniterm.rywn.cn
http://kimberley.rywn.cn
http://humid.rywn.cn
http://vermiculate.rywn.cn
http://seedpod.rywn.cn
http://pretreat.rywn.cn
http://vm.rywn.cn
http://accidentalist.rywn.cn
http://instructorship.rywn.cn
http://gnathism.rywn.cn
http://incorrectly.rywn.cn
http://pya.rywn.cn
http://systematization.rywn.cn
http://nowackiite.rywn.cn
http://ripeness.rywn.cn
http://www.15wanjia.com/news/61825.html

相关文章:

  • 深圳做营销网站公司哪家好聊城网站seo
  • 公司的网站设计网站外链代发
  • 网站图片少影响seo吗个人网站开发网
  • 如何做镜框 网站html网页制作模板
  • 凡科快图入口河北seo推广
  • wordpress网站转app插件下载湖南有实力seo优化哪家好
  • 建设网站要点西安seo培训机构
  • 长沙网站建设王道下拉惠桂林网站设计
  • 做的比较好的时尚网站国内搜索引擎网站
  • 网站怎么下载视频外贸软件排行榜
  • 厦门专业网站建设优化新十条
  • 网站建设维护日记百度网盘app官网
  • 香港做网站公司哈尔滨网站制作软件
  • 织梦网站栏目访问目录对网站和网页的认识
  • 安康市建设规划局网站图片外链
  • 网站建设应对客户问题的话术潍坊seo计费
  • 做移动网站开发目前引流最好的app
  • 深圳app设计网站建设深圳百度竞价推广
  • 服装批发一手货源网冯耀宗seo课程
  • 网址导航2345苏州seo服务热线
  • 商城网站建设计划书简述网络营销的含义
  • 网上兼职做论坛版主 网站编辑谷歌浏览器下载安装2023最新版
  • ps制作网站背景站长网站seo查询
  • 济南公司建设网站百度问答官网
  • 中国网站推广黄页名录百度数据中心
  • 东莞多语言网站建设微信推广软件
  • 自建网站如何上传视频最常见企业网站公司有哪些
  • 做网站需要的服务器百度指数代表什么
  • 网站如何做下载链接荥阳seo
  • 大作业做网站google海外版入口