【发布时间】:2013-09-20 07:21:18
【问题描述】:
我有一组从 1 到 100 000 000 000 的数字。但总数不超过 50 000。 似乎可以创建具有 50 000 个元素的对象数组。所以我可以通过索引从数组中获取元素,这非常快 - 如果我拥有从 1 到 50 000 的所有这些数字。 是否可以使用一些函数来映射从 1 到 50 000 的数字?在这种情况下,要找到对象,我只计算索引!
【问题讨论】:
-
使用模块化算法。这样,您可以将 1 到 100 000 000 000 之间的每个数字映射到 1 到 50 000 之间的数字。
-
如果您将 50,000 个数字按排序顺序添加到数组中,您可以使用二进制搜索来查找给定数字是否在大约 16 步中的数组中。你问的是这个吗?
-
@Jakob:我怀疑 OP 正在寻找一对一的映射...
-
@Jakob 加上类似线性探测的东西,否则你会遇到太多的碰撞。
标签: java arrays algorithm indexing