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

网站优化文章东莞专业网站建设价钱

网站优化文章,东莞专业网站建设价钱,企业局域网站建设模板,杭州学网站建设1.从40个亿中产生一个不存在的整数 题目要求#xff1a;给定一个输入文件#xff0c;包含40亿个非负整数#xff0c;请设计一个算法#xff0c;产生一个不存在该文件中的整数#xff0c;假设你有1GB的内存来完成这项任务。**** 解题中心思想#xff1a;存储的不是这40亿…1.从40个亿中产生一个不存在的整数 题目要求给定一个输入文件包含40亿个非负整数请设计一个算法产生一个不存在该文件中的整数假设你有1GB的内存来完成这项任务。**** 解题中心思想存储的不是这40亿个数据本身而是其对应的位置。 本题不用写代码能把方法过程说清楚就可以。 1.1 位图存储大数据的原理 方法8 bit 为 1B一个32位整数需要4B的存储空间40亿个数就是 40亿 * 4B约为16GB用位图来做的话会更节省空间因为位图的每个位置只能用0或1进行状态表示这样就只需要40亿 / 8 5亿字节也就是大约500M的存储空间。 过程具体来做就是先遍历这40亿个数并把遍历的每个数在位图上的相对位置设置为1。这40亿个数遍历结束后开始遍历位图看看哪个位置上的状态为0就说明这个位置对应的数没有在40亿个数中出现位图遍历结束后就能得到所有未在40亿个数中出现过的数。 1.2 使用10MB来存储呢 如果使用10MB来存储位图也搞不定了这个时候就得使用分块思想用时间换空间通过两次遍历来处理。 40亿个数需要约500MB的空间如果只有10MB的空间至少需要50个块才可以。一般划分块都使用2的幂次方的整数倍此处划分为64个块是合理的。 首先将 0 − 2 32 0-2^{32} 0−232 这个范围的数平均分成64个区间每个区间是67 108 864个数因为一共只有40亿个数所以在统计每一个区间上的数有多少时肯定会有至少一个区间上的计数小于67 108 864。利用这一点可以找出其中一个没出现过的数。具体过程如下 第一次遍历先申请长度位64的整型数组countArr[0, ..., 63]countArr[i]用来统计区间i上的数有多少。遍历40亿个数跟去当前数是多少来决定哪一个区间上的计数增加。比如如果当前数为2 567 278 1892 567 278 189 / 67 108 864 38 所以第38个区间上计数增加countArr[51]。遍历完40亿个数之后遍历countArr必然会有某一个位置上的值countArr[i]小于67 108 864表示第i区间上至少有一个数没出现过。 此时使用的内存是非常小的是countArr的大小64 * 4B 假设找到第37区间上的计数小于67 108 864那么对这40亿个数据进行第二次遍历 申请长度为67 108 864的位图bit map占用大约8MB的空间记为bitArr[0, ... , 67108863]。遍历这40亿个数此时的遍历只关注落在第37区间上的数记为num(num满足 num / 67108864 37)其他区间的数全部忽略。如果步骤2的num在第37区间上将bitArr[num - 67108864 * 37]的值设置为1也就是只做第37区间上的数的bitArr映射。遍历完40亿个数之后在bitArr上必然存在没被设置成1的位置假设第i个位置上的值没被设置成1那么67108864 * 37 i这个数就是一个没出现过的数 步骤小结 根据 10MB 的内存限制确定统计区间的大小就是第二次遍历时的 bitArr 大小。利用区间计数的方式找到那个计数不足的区间这个区间上肯定有没出现的数。对这个区间上的数做 bit map 映射再遍历bit map找到一个没出现的数即可。 1.3 如何确定分块的区间 上面的例子中采用两次遍历第一次将数据分成64块刚好解决问题为什么不是128块32块16块或者其他块数呢 这是主要为了保障第二次遍历时每个块都能放进这10MB的空间中。 2 23 10 M B 2 24 2^{23} 10MB 2^{24} 22310MB224而 2 23 8388608 2^{23} 8388608 2238388608 大约是8MB也就是说我们一次的分块大小只能为8MB左右。我们在第二次遍历时分成64块刚好满足要求这是最少得分成64块当然如果分成128块、256块也是可以的。
http://www.w-s-a.com/news/378098/

相关文章:

  • 哈尔滨网页设计网站模板泰兴建设局网站
  • 响应式网站设计公司报纸做垂直门户网站
  • 陕西旭泽建设有限公司网站企业网站建设软件需求分析
  • 上海公司网站建设方案中企动力西安分公司
  • dedecms网站后台怎样才能上百度
  • 云互联的网站名字亚马逊雨林生物
  • 电商网站功能企查查企业信息查询网
  • 特色网站建设中国住房和城乡建设局官网
  • 长春市住房城乡建设厅网站做白酒网站
  • 自己的网站怎么做的成品免费ppt网站
  • 番禺区网站建设哪里有泰安公司
  • 网站制作详细过程网站开发最强工具
  • 孟村县做网站长春城投建设投资有限公司网站
  • 国家重大建设项目库网站wordpress安装 var
  • 供求信息网站建设报价网站制作 苏州
  • 动漫建模代做网站百度一下wordpress nginx 固定链接
  • 广州网站开发网络公司网站建设的书
  • php手机网站开发教程家政网站怎么做
  • 视频网站的建设预算通信科技网站设计
  • 糖果网站建设策划书淘宝客网站开源
  • 建站公司还有前途吗cf网站编程
  • 网站建设需求确认表建站工具 比较
  • 刚建设的网站多久能在百度查到考试系统 微网站是什么样的
  • 商城网站建设高端企业网站建设劣势
  • 网站建设征集通讯员的通知seo推广外包
  • 微信公众号微网站建设专业网站建设出售
  • 怎么用wordpress建立自己的网站加强校园网站建设
  • 用什么做网站后台的织梦网站怎么上传
  • 怎么获取网站数据做统计百度快照推广有效果吗
  • 淘宝领卷网站什么做制造网站开发