位图 - BitMap
(二进制位数组,节省内存,速度O1)(只能处理有范围正整数)
如何从40亿个qq号中快速查找到一个qq号是否存在?
要求内存在1GB内,且响应速度在一秒内。
无法使用hashset(内存不够)、hashMape也不行他的key也是存在内存上的
使用一个二进制数组,开辟43亿二进制位数组,里面存的都是1.0.(占用512MB内存)
为啥要43亿呢,因为我们qq号是一个int类型,4个字节,4*8=32位,2的32次方=43亿
数组充当一个map:

外部排序:
借助磁盘文件的排序算法
内部排序:借助内存的排序算法



哈希分治:

布隆过滤器:
提速但有一定误判率



总结
①:位图bitsmap 
② ③:手机号是11位的


否则就需要用到哈希分治、或外部排序了
④:小顶堆
文章探讨了如何在有限内存(1GB)内,对40亿个QQ号进行快速查找,提出使用位图策略,通过创建43亿位的二进制数组来存储QQ号的存在状态。由于内存限制,无法使用HashSet或HashMap。提到了外部排序、内部排序、哈希分治以及布隆过滤器作为可能的解决方案,同时指出手机号码的11位特性。小顶堆等其他数据结构也被提及作为潜在的优化工具。
2935

被折叠的 条评论
为什么被折叠?



