查找数字的最快方法是什么?

时间:2013-10-03 00:15:49

标签: performance algorithm data-structures integer big-o

我存储的数字(范围从1到小于100,000)然后以数字作为参数调用,并且必须将其用作查找中的键。在过去,当获取短char *字符串作为查找的键时,我使用了trie实现。我想知道是否应该使用一个数字,如果有更快的方式来研究/考虑/调查?

2 个答案:

答案 0 :(得分:3)

这实际上取决于你要做的事情。

如果你有很多内存,你可以构建一个包含100,000个元素的数组,并在查看表时只使用数字作为索引。这可能是最快的方法(查找都是具有极低常数因子的O(1)),尽管它不是最节省内存的。如果内存不足,标准哈希表将是一个很好的折衷方案;所有操作都可以获得预期的O(1)运行时间。

如果您需要能够查询“最接近x的数字?”的形式,那么您可能希望使用包含整数的平衡二叉搜索树。这使您可以在时间O(log n)中执行后继和前任搜索和查找。如果您对尝试更复杂的数据结构感兴趣,可以使用van Emde Boas tree,它可以在时间O(日志日志U)中进行插入,删除,查找,前驱和后继搜索,其中U是可能的最大值。

希望这有帮助!

答案 1 :(得分:0)

我建议使用散列表。每个值都将放在一个可以使用您的密钥引用的唯一存储桶中。如果您的数据可以这种方式组织,那么这将是最快的查找。