双层桶
来源:互联网 发布:上交所龙虎榜数据 编辑:程序博客网 时间:2024/04/30 03:38
双层桶
双层桶不是数据结构,只是一种算法思维,分治是其根本思想。在处理海量数据时,有着一席之地。
当我们有一大堆数据需要处理,而局限于各种资源限制(内存、范围等)又不能一次处理完毕,此时,我们就需要将这一大堆数据分成我们可以处理的多个小段数据。然后,按照一定的策略处理各小段数据,从而完成既定目标。
双层桶并不是要求我们只能把我们的大数据划分一次,双层是个虚指,如果有需要,可以把数据一层一层的进行分割,一层一层的处理,直至可以完成目标。
适用范围
第K大
中位数
不反复或反复的数字
......
实例
1).2.5亿个整数中找出不重复的整数的个数,内存空间不足以包容这2.5亿个整数。
整数个数为2^32,也就是,我们可以将这2^32个数划分为2^8个区域,然后不同的区域在使用bitmap等方式处理了。也可以直接用bitmap处理,每两个bit位表示一个整数,00表示整数未出现,01表示出现一次,10表示出现两次及其以上。
2).5亿个int找它们的中位数。
我们将int分别为2^16个地区,然后读取数据统计落到各个地区里的数的个数,以后我们凭据统计成果就能够判定中位数落到哪个区域,同时晓得这个区域中的第几大数恰好是中位数。然后第二次扫描我们只统计落在这个区域中的那些数便可以了。
3).此刻有一个0-30000的随机数生成器。请凭据这个随机数生成器,计划一个抽奖范围是0-350000彩票中奖号码列表,个中要包括20000其中奖号码。
一个0到3万的随机数生成器要生成一个0到35万的随机数。那么我们完整可以将0-35万的区间分成35/3=12个区间,然后每一个区间的长度都小于3万,我们就可以用问题给的随机数生成器来生成为了,然后再加之该区间的基数。每一个区间要生成的随机数个数:区间长度*随机数密度,30000*(20000/350000)。
- 双层桶
- 双层桶
- 双层桶划分
- 双层桶划分
- .双层桶划分
- 双层桶-中位数求解
- 海量数据处理双层桶
- 海量数据处理双层桶
- 海量数据处理专题之双层桶划分
- 海量数据处理之双层桶划分
- 海量数据处理之双层桶划分
- 海量数据处理问题之双层桶划分
- 海量数据处理专题(六)——双层桶划分
- 海量数据处理专题(六)——双层桶划分
- 海量数据处理专题(六)——双层桶划分
- 海量数据处理专题(六)——双层桶划分
- 双层循环
- 双层汉诺塔
- JSONKit升级XCODE后报一堆警告解决办法
- 线段树与树状数组
- POJ 1458 Common Subsequence
- 第十二讲 对话框和对话框类CDialog
- 算菜价 2090
- 双层桶
- 【PHP】 异常处理
- present的时候是可以直接回到第一个viewcon的
- 第十三讲 MFC工具条和状态栏
- 基于模型的测试框架的想法 (一)
- poj 1655 Balancing Act(树dp)
- 使用WinDbg分析蓝屏dump原因
- 第十四讲 SOCKET类的设计和实现
- linux c mysql 开发