该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-23
抛出异常的爱 写道 13是表示手机
下几位是表示运营公司 再下几位是表示发行区域 最后几位才是人 所以只有最后几位是有必要放进数组中的 其它的可以压缩。。。。到4位以内 4位,也就是少于10^4 =10000= 1万个手机号码. gqf2008 写道 给你1G内存,如何从3000万个手机号码中检索出你要的号码,要求每秒检索>1000次
大家来探讨,发表您的意见! 3000万 = 3*10^7 难道说这3000万手机号码里面有重复的? |
|
返回顶楼 | |
发表时间:2007-11-23
还是要进行二次检索,三次检索?
|
|
返回顶楼 | |
发表时间:2007-11-25
不用,主要是通过数组下标来定位,关键的问题是要把数组长度尽量缩小
|
|
返回顶楼 | |
发表时间:2007-11-25
唔,那怎么用一个10000长度的数组保存3000万个信息呢?
蛮神奇的. |
|
返回顶楼 | |
发表时间:2007-11-26
3000个10000长度的数组就可以了
|
|
返回顶楼 | |
发表时间:2008-06-03
终极解决方案:
将手机号用整数表示,一个手机号占4byte内存 将所有手机号排序放入3000万的整数数组中。 4 * 3000 * 10000 需要 120M内存 查询时使用二分法,足够满足你的速度要求 |
|
返回顶楼 | |