何时使用哈希数据结构?

时间:2015-01-07 08:21:30

标签: c performance algorithm hashtable avl-tree

我有一组对象(最多500个)。

我的参赛作品将根据类似MAC的密钥进行查询,其范围未知。

现在,我对哪种数据结构和算法用于有效查找值感到困惑。

我不确定是否要为这种情况寻求平衡的BST(AVL)或散列表。

500个密钥是否很小,可用于构建哈希表?

在我的案例中,最好的方法是什么?

我读到computing hash might prove costly when the number of keys is less

另外,我还想知道考虑哈希表需要出现多少条目(分钟)?

如果需要进一步的详细信息,请添加评论。

提前致谢。

1 个答案:

答案 0 :(得分:2)

以下是Hash结构的一些好处,

  1. 快速查找(理论上为O(1))
  2. 高效存储(有助于存储键值)
  3. 虽然这些属性是有益的,但在某些情况下哈希表可能会表现不佳。

    1. 如果您有大量对象,则需要更多存储空间(内存),因此可能会导致性能下降
    2. 哈希/密钥算法不应该很复杂。否则将花费更多时间进行散列和查找密钥。
    3. 密钥冲突应该是最小的,以避免在单个密钥或密钥复制的所有值中进行线性搜索。
    4. 在你的情况下,如果哈希算法不是太复杂,那么你肯定可以使用哈希表,因为你只有500个对象。如果您具有查找密集型工作流,​​则哈希表可以节省大量时间。如果您的数据几乎是静态的,那么不要担心初始加载时间,因为您的查找时间会快得多。

      您还可以查看另一个对于较少值的值有效的DS,例如哈希集,AVL树,哈希树。对于500个对象,时间差异将是线性搜索和散列搜索中的毫秒或微秒差异。因此你不会达到很多。改进。因此,寻找容易性和可读性。