最快的搜索和插入

时间:2011-08-03 07:03:16

标签: search data-structures hash

我有一百万件物品。哪个是以名称作为键查找特定对象的最快方法也是执行插入的最快方法?哈希是否足够?

5 个答案:

答案 0 :(得分:4)

可能是哈希表,假设您不需要除基于密钥的访问之外的任何其他内容。确保密钥的散列足够好(以最小化冲突)并且表足够大(出于同样的原因)。

答案 1 :(得分:1)

这取决于您需要进行查找的频率以及插入元素的频率。

如果您经常需要插入元素,那么链接列表的效果会更好。

如果您经常需要搜索元素,则哈希表更有效。也许,你可以同时拥有 - 你的主数据作为链表,以及一个哈希表,它将作为列表的索引。

答案 2 :(得分:1)

您还可以使用二叉搜索树。 BST还具有快速搜索和快速插入的优点。使用密钥在树中路由您的方式并构建树节点以获得值。

如果您不确定操作的平衡(例如:查找键和值对,插入等)以及您(根据您的分析)知道键可能会发生冲突,请使用BST支持哈希表经常在哈希表中(这将导致哈希表的性能不佳)。

答案 3 :(得分:1)

您可以使用以下几种结构。每个都有它的优点和缺点。

如果您有一个最小化冲突的表,HashTable将具有很好的查找时间和插入时间。如果没有,那么查找/插入可以导致更多的时间。

二进制搜索树有ln(n)插入和查找,前提是它是平衡的。有时平衡会导致插入比ln(n)稍长一些,具体取决于您使用的BST。

答案 4 :(得分:1)

可以使用B +树,它保证较低的搜索复杂度(因为你快速到达叶节点,高度= log n到基k,k =节点的程度)。数据库有类似的要求,他们使用B +树来维护和检索数据。

相关问题