论坛首页 入门技术论坛

【探讨】给你1G内存,如何从3000万个手机号码中检索出你要的号码,要求每秒检索>1000次

浏览 6170 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-11-23  
抛出异常的爱 写道
13是表示手机
下几位是表示运营公司
再下几位是表示发行区域
最后几位才是人
所以只有最后几位是有必要放进数组中的
其它的可以压缩。。。。到4位以内


4位,也就是少于10^4 =10000= 1万个手机号码.

gqf2008 写道
给你1G内存,如何从3000万个手机号码中检索出你要的号码,要求每秒检索>1000次

大家来探讨,发表您的意见!


3000万 = 3*10^7

难道说这3000万手机号码里面有重复的?
0 请登录后投票
   发表时间:2007-11-23  
还是要进行二次检索,三次检索?
0 请登录后投票
   发表时间:2007-11-25  
不用,主要是通过数组下标来定位,关键的问题是要把数组长度尽量缩小
0 请登录后投票
   发表时间:2007-11-25  
唔,那怎么用一个10000长度的数组保存3000万个信息呢?
蛮神奇的.
0 请登录后投票
   发表时间:2007-11-26  
3000个10000长度的数组就可以了
0 请登录后投票
   发表时间:2008-06-03  
终极解决方案:
将手机号用整数表示,一个手机号占4byte内存
将所有手机号排序放入3000万的整数数组中。
4 * 3000 * 10000 需要 120M内存

查询时使用二分法,足够满足你的速度要求
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics