在哪种情况下我应该使用try而不是二进制树/哈希表?

时间:2013-08-05 00:58:15

标签: algorithm data-structures

密钥通常是字符串这一事实,是否对string数据集合更有用?我知道哈希表占用的空间较少,因为它有一块内存分配给它,而不是每个字符串的每个字符。

在搜索方面,O(m)是最坏的情况,其中m是密钥的长度。二叉树搜索是O(log n),所以我想我应该根据情况比较哪个更有效?

P.S。在你投票结束之前,这不是意见问题。我需要有关数据结构的真实事实才能做出最佳选择。

谢谢

1 个答案:

答案 0 :(得分:2)

您必须根据用例决定您要查找的内容。 就事实而言,以下是我们应该记住的要点。

  1. HashTable存储密钥的数据,只有在您想要搜索特定字符串时才能使用它。 因此,如果要搜索以K开头的所有字符串,则必须迭代整个Hashtable,并且在表中插入数据时订单信息也会丢失。

  2. 就BST而言,很容易在其中存储字符串,它会按照自然顺序存储字符串,但在每个节点都必须匹配所有字符,这不是很好从搜索时间的角度来看。

  3. 现在来到Trie,不像Hashtable和BST,Trie从存储的角度来看并不好,而且需要太多的空间,但从搜索的角度来看,它要快得多。

  4. 再一次,这一切都取决于您想要购买什么以及以什么价格购买,基于此,您可以选择Hashtable,BST,Trie或SuffixTree。