为什么HashTable删除O(1)?

时间:2014-08-08 00:54:53

标签: c# hashtable

我理解为什么HashTable Add是O(1)(但如果我错了,请纠正我):正在添加的项目总是分配给后备阵列中的第一个可用点。

我理解为什么Lookup是O(n)(再次,如果我错了,请纠正我):你需要遍历支持数组以找到所请求的值/键,以及它的运行时间操作将与集合的大小成正比。

但是,为什么删除constant?对我来说,需要添加/查找中涉及的相同主体。

修改

MSDN文章指的是未找到请求删除的项目的情况。它提到这是一个O(1)操作。

2 个答案:

答案 0 :(得分:3)

插入和删除的最差情况应为O(n),请参阅http://en.wikipedia.org/wiki/Hash_table

当我们插入时,我们必须检查值是否在表中,因此在最坏的情况下O(n)

想象一下当所有哈希值相同时的病态情况。

也许MSDN指的是平均复杂性。

答案 1 :(得分:1)

O(1)是最好的情况,如果适当调整表的大小,可能是平均情况。 HashTable的最坏情况删除是O(n)。