海量数据算法题

来源:互联网 发布:数据汇聚层的作用 编辑:程序博客网 时间:2024/06/05 18:30
 现在有1千万个随机数,随机数的范围在11亿之间。现在要求写出一种算法,将11亿之间没有在随机数中的数求出来。


方法:一个32位的整数32位表示32个数,1亿/32 = 3125000,使用3.125 * 4m即可保存1亿个数.对于数n(n-1) / 32为其在数组中的下标,table[(n - 1) % 32]与数组中此下标的值使用或操作。


表中值为0000001, 0000010, 0000100这样的表示方式,具体的数值使用查表法加快速度


最后算某值是否存在,使用与操作即可计算出

例如:比如说你现在有个数N=30,假如标识数组为index[3125000],这时候该数的表示值在index[0],用table[29]中的值(001000.......)与它相或,index[0]=index[0]||table[29]
原创粉丝点击