我理解为什么HashTable Add是O(1)(但如果我错了,请纠正我):正在添加的项目总是分配给后备阵列中的第一个可用点。
我理解为什么Lookup是O(n)(再次,如果我错了,请纠正我):你需要遍历支持数组以找到所请求的值/键,以及它的运行时间操作将与集合的大小成正比。
但是,为什么删除constant?对我来说,需要添加/查找中涉及的相同主体。
修改
MSDN文章指的是未找到请求删除的项目的情况。它提到这是一个O(1)操作。
答案 0 :(得分:3)
插入和删除的最差情况应为O(n)
,请参阅http://en.wikipedia.org/wiki/Hash_table。
当我们插入时,我们必须检查值是否在表中,因此在最坏的情况下O(n)
。
想象一下当所有哈希值相同时的病态情况。
也许MSDN指的是平均复杂性。
答案 1 :(得分:1)
O(1)是最好的情况,如果适当调整表的大小,可能是平均情况。 HashTable的最坏情况删除是O(n)。