数据组织问题(百度面试题)

周东尧 2012-12-04 04:02:50
今天去百度面试,有一道题,觉得很有意思,大家一起看看,有什么高见:
有一推访问本站的来源IP地址:
1.1.1.1
.
.
.
.
255.255.255.255
如何组织这些数据以便快速的进行匹配,查询某一个IP地址,如145.345.23.445是否访问过本站?
大家看看有什么好办法没有?
...全文
306 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyou1912 2013-04-20
  • 打赏
  • 举报
回复
位图法: 时间O(1), 空间: 512MB (固定) 哈希: 时间O(1) , 空间: 10*O(N)左右. Map/Set(基于二叉树): 时间Log(N), 空间: 10*O(N)左右. 时间效率: 位图>哈希>Map/Set(二叉树) 空间效率(当IP数量为1百万级时): 哈希/Map/STL为10MB左右. 比位图少很多. 更适合. 空间效率(当IP数量为1千万级时): 哈希/Map/STL为100MB左右. 比位图少一点. 看需求权衡. 空间效率(当IP数量为1亿级别时), 哈希/Map/STL为1GB左右, 比位图还要多. 位图更适合
nice_cxf 2012-12-06
  • 打赏
  • 举报
回复
引用 9 楼 pengliangchina 的回复:
引用 5 楼 nice_cxf 的回复:用位图处理就是了,最多2^32个地址,用位图需要16M左右的内存,至于hash需要4g左右大概不行 我算的是510M,请教下16M是怎么算的啊?
不好意思,我算错了,应该是512M
蜡笔小新啦 2012-12-06
  • 打赏
  • 举报
回复
引用 5 楼 nice_cxf 的回复:
用位图处理就是了,最多2^32个地址,用位图需要16M左右的内存,至于hash需要4g左右大概不行
我算的是510M,请教下16M是怎么算的啊?
蜡笔小新啦 2012-12-06
  • 打赏
  • 举报
回复
引用 5 楼 nice_cxf 的回复:
用位图处理就是了,最多2^32个地址,用位图需要16M左右的内存,至于hash需要4g左右大概不行
hash确实不行。5楼正解!
nice_cxf 2012-12-05
  • 打赏
  • 举报
回复
用位图处理就是了,最多2^32个地址,用位图需要16M左右的内存,至于hash需要4g左右大概不行
tanhaiyuan 2012-12-05
  • 打赏
  • 举报
回复
哈希 在查找方面速度很快;而且因为这里IP地址并不多,因此哈希效果应该比较好;
蜡笔小新啦 2012-12-05
  • 打赏
  • 举报
回复
涉及到很多细节都没有说明白。 其实我觉得散列应该还不错,在这里应用。
周东尧 2012-12-05
  • 打赏
  • 举报
回复
位图法和字典树都是不错的注意,正在看
周东尧 2012-12-05
  • 打赏
  • 举报
回复
一方面是要减少数据的存储量另,一方面是这种存储方式要提高检索匹配的效率,hash确实不可行。希望大家能说一下自己的详细思路,便于大家讨论,最好自己给出一个对自己方案的评价。
周东尧 2012-12-04
  • 打赏
  • 举报
回复
最好是详细的方案,这个是开放性问题,细节问题很多
longburulin 2012-12-04
  • 打赏
  • 举报
回复
用stl中的map嵌入map不知道可不可以?求指点哈

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧