哈希表:搜索与后续时间复杂度

时间:2012-05-12 23:47:18

标签: algorithm hashtable big-o time-complexity

Skiena's book of algorithm design中,假设哈希表可以有最多m个桶,并且元素总数为n,则会出现以下更糟糕的案例时间复杂性:

搜索:O(n)

接班人:O(n + m)

为什么两者不同?找不到继承者也会涉及搜索下一个元素吗?

1 个答案:

答案 0 :(得分:5)

Hashing以破坏秩序为代价实现了恒定时间搜索。当我搜索一个元素时,我将其哈希(O(1))并在最坏的情况下查看所选的桶(O(n),如果我线性扫描,因为所有其他桶可能都是空的。)

当我想要一个给定的元素之后的下一个元素时,我不能保证它将在同一个桶中。事实上,我根本不知道它在哪里。由于我不知道接班人是什么,我不能哈希它找到它的桶。相反,我被迫查看每个桶(O(m)。)

如果我在扫描铲斗时按顺序探测物品,我最终也会在物品数量(O(n))中完成线性工作。这导致总复杂度为O(n + m)