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

网站开发培训成都顺义哪里有做网站设计的

网站开发培训成都,顺义哪里有做网站设计的,wordpress 默认图片链接,上海网页制作设计营销目录 一、位图的概念 二、位图的实现 2.1 - bitset.h 2.2 - test.cpp 三、位图的应用 3.1 - 例题一 3.2 - 例题二 一、位图的概念 假设有这样一个需求#xff1a;在 100 亿个整型数字中快速查询某个数是否存在其中#xff0c;并假设是 32 位操作系统#xff0c;4 GB…目录 一、位图的概念 二、位图的实现 2.1 - bitset.h 2.2 - test.cpp 三、位图的应用 3.1 - 例题一 3.2 - 例题二 一、位图的概念 假设有这样一个需求在 100 亿个整型数字中快速查询某个数是否存在其中并假设是 32 位操作系统4 GB 内存。 由于数字的数量如此之多如果使用一个 int 型的数组进行存储需要占用的内存空间为 那么如何用更小的空间来 存储 这些数字呢 我们可以用比特位bit来标记数字每个比特位中存放的值则表示其标记的数字是否存在0 表示不存在1 表示存在这就是位图的基本思想。 例如标记数字 1、2、4、6 由于 int 总共有  种取值所以标记所有这些数字需要占用的内存空间为 。 二、位图的实现 2.1 - bitset.h #pragma once ​ #include vector ​ namespace yzz {templatesize_t N  // 总共有 N 1 个比特位class bitset{public:bitset() : _v(N / 32 1) { } ​void set(size_t x){size_t i x / 32;size_t j x % 32;_v[i] | (1 j);} ​void reset(size_t x){size_t i x / 32;size_t j x % 32;_v[i] ~(1 j);} ​bool test(size_t x) const{size_t i x / 32;size_t j x % 32;return _v[i] (1 j);}private:std::vectorint _v;}; } 2.2 - test.cpp #include bitset.h #include iostream using namespace std; ​ int main() {int arr[] { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5 };yzz::bitset0xffffffff bs;for (const int e : arr){bs.set(e);}bs.reset(-3);bs.reset(3);for (const int e : arr){if (bs.test(e))cout e ;}// -5 -4 -2 -1 0 1 2 4 5cout endl;return 0; } 三、位图的应用 位图的应用是大量数据的快速排序、查找和去重。 3.1 - 例题一 给定 100 亿个整数找到只出现一次的所有整数。 doublebitset.h #pragma once ​ #include bitset.h ​ namespace yzz {templatesize_t Nclass doublebitset{public:void set(size_t x){if (_bs1.test(x) 0 _bs2.test(x) 0)  // 00 - 01{_bs2.set(x);}else if (_bs1.test(x) 0 _bs2.test(x) 1)  // 01 - 10{_bs1.set(x);_bs2.reset(x);}// 10 则不变} ​bool isSingleNum(size_t x) const{return _bs1.test(x) 0 _bs2.test(x) 1;}private:bitsetN _bs1;bitsetN _bs2;}; } 思路用 2 个比特位来表示一个数字的状态00 表示不存在01 表示只出现一次10 表示出现一次以上。 具体实现则是使用两个位图。 思考给定 100 亿个整数找到出现次数不超过 2 次的所有整数。 思路是类似的用 2 个比特位来表示一个数字的状态00 表示不存在01 表示只出现一次10 表示出现两次11 表示出现两次以上。 test.cpp #include doublebitset.h #include iostream using namespace std; ​ int main() {int arr[] { -3, -3, -2, -1, -2, 0, 1, 1, 2, 2, 3 };yzz::doublebitset0xffffffff dbs;for (const int e : arr){dbs.set(e);}for (const int e : arr){if (dbs.isSingleNum(e))cout e ;}// -1 0 3cout endl;return 0; } 3.2 - 例题二 给两个文件分别有 100 亿个整数求两个文件的交集。 法一 #include bitset.h #include iostream using namespace std; ​ int main() {int arr1[] { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5 };int arr2[] { -3, -3, -2, -1, -2, 0, 1, 1, 2, 2, 3 };yzz::bitset0xffffffff bs1;yzz::bitset0xffffffff bs2;// 去重for (const int e : arr1){bs1.set(e);}for (const int e : arr2){bs2.set(e);}// 求交集for (int i -10; i 10; i){if (bs1.test(i) bs2.test(i))cout i ;}// -3 -2 -1 0 1 2 3cout endl;return 0; } 法二 #include bitset.h #include iostream using namespace std; ​ int main() {int arr1[] { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5 };int arr2[] { -3, -3, -2, -1, -2, 0, 1, 1, 2, 2, 3 };yzz::bitset0xffffffff bs;for (const int e : arr1){bs.set(e);}for (const int e : arr2){if (bs.test(e)){cout e ;bs.reset(e);  // 避免出现重复的数字}}// -3 -2 -1 0 1 2 3cout endl;return 0; }
http://www.hkea.cn/news/14573157/

相关文章:

  • 谷歌生成在线网站地图wordpress激活邮件
  • 免费建网站平台访问国外网站速度慢
  • 台州企业网站搭建价格网站建设和注册
  • 东莞市专注网站建设品牌网页设计与制作课程教学痛点
  • 杭州高端网站设计公司互联网外包公司有哪些
  • 百度生成手机网站东莞微信网站建设信息
  • 网站权限配置如何制作简易个人网站
  • 网站问卷调查怎么做静态网站flash
  • 甘肃省省建设厅网站有创意的设计工作室名字
  • 上海好的高端网站建设大学做视频网站设计
  • 自建网站多少钱慈溪企业网站
  • 郑州建站地方同城网站开发
  • 免费网站正能量app应用大全重庆微信网站建设价格
  • 网站管理后台地址怎么查询南京关键词seo公司
  • 租房网站开发wordpress issingle
  • 网站建设、微信小程序、修改wordpress图标
  • 营销网站的例子互动网站建设多少钱
  • 湘潭做网站找磐石网络一流郑州百度推广托管
  • 网站建设相关费用2023年中国进入一级战备状态了吗
  • 哪个网站做二手叉车回收好js+下载服务器wordpress
  • 匿名聊天网站怎么做腾讯广告建站工具
  • 个人网站建设知乎做翻译兼职的网站
  • 成都网站建设低价wordpress媒体库只有2m
  • 资源站 wordpresswordpress修改主页模板
  • 贵南县公司网站建设2017网络公司排名
  • 河北建站公司哪里的网站建设
  • linux 网站开发怎么样把以前做的网站删除
  • 京东网站谁建设营销型网站名词解释
  • 淮安网站建设多少钱网站建设过程中要怎么打开速度
  • 做网站和做软件一样吗做外贸怎样免费登录外国网站