在每个槽中使用双向链表查找哈希表中的最大元素

时间:2016-12-20 04:35:43

标签: algorithm search hashtable

有一个哈希表,一个数组中的插槽,每个插槽都有一个双向链表,未排序。

元素总数为n,广告位数为m

时间复杂度是多少:

  • 查找整个哈希表中的最大元素。
  • 找到给定元素x的后继元素。

他们应该都是O(n),对吗?因为你必须迭代每个元素。

但是,在书<The algorithm design manual 2nd>第90页中,它表示它是O(n+m),但我不明白。

任何人,有助于告诉哪个是对的?而且,为什么。

感谢。

1 个答案:

答案 0 :(得分:5)

插槽可以为空(列表中没有元素)。您必须迭代所有插槽才能找到所有非空列表,这样O(m)才能正常工作。然后你必须搜索所有列表,这是O(n)工作。总工作量:O(n + m)。