AVL vs Hashtable with Chaining

时间:2014-04-06 19:53:31

标签: hashtable avl-tree

我知道avl树的最佳情况和最坏情况是登录查找,插入和删除。然而,对于带链接的哈希表,最好的情况和最坏的情况是什么?如果给出两个神秘数据结构,我将如何区分这两个?

1 个答案:

答案 0 :(得分:0)

  对于带链接的哈希表,最好的情况和最坏的情况是什么?

查找,插入,删除操作最佳时间为O(1)或恒定时间。在最糟糕的时候,

  • insert:O(1),假设链接仅通过添加到链的末尾来完成
  • 删除:O(k),其中k =最长链上的元素数。 k == n当散列函数非常差并且所有n个值映射到相同的条目并被链接时。因此,绝对最坏的情况是O(n)。
  • 找到:O(n),使用与删除相同的推理
  

如果给出两个神秘数据结构,我如何区分这两个?

只是一个想法:

  • 在两个结构中插入数据并绘制插入操作与n的插入时间。选择数据使模拟AVL树的最坏情况(即,如果是整数,按1000000,99999,999998的顺序插入......),而不是哈希表。
  • 注意正在生成的图。 AVL树将从头开始具有插入时间log(n),而对于散列表而言这应该是相当恒定的。大约在第1000个插入ALV树将需要10倍的插入时间(假设最坏情况插入发生)。但是插入时间应该与hashtable几乎相同。假设散列表具有足够的容量并且散列函数不足以与顺序数据发生冲突,例如'1000000,99999,999998 ......'
  • 如果仍然不确定,则插入两个结构,希望填充哈希表并强制它开始链接。经过多次插入后,请注意情节。 AVL仍将保持log(n)曲线,但hashtable将显示不同的曲线,如:具有较高常数值的恒定时间。