我有一组连续整数值和相应的一组非连续值,例如:
0 -> 22
1 -> 712
2 -> 53
3 -> 12323
...
等等。
项目的数量非常大(大约 10^9...10^10),因此不能只使用普通数组。
是否存在能够从第一个值快速映射到另一个具有中等内存需求的数据结构?例如:
ret = map(0); // returns 22
ret = map(3); // returns 12323
编辑:这个集合中的值实际上是使用伪随机数生成器生成的,所以不可能建议一些特定的分布。问题是 - 是否可以降低内存要求(可能是以查找速度为代价)?我的意思是使用“完美哈希”之类的东西——生成这种“完美哈希”所需的时间并不重要。