链式哈希表的时间复杂度是多少?

时间:2014-06-16 11:04:36

标签: c++ hashtable

我有一个哈希表,它由1000个元素和100个桶组成,每个桶最多100个条目。假设一个桶有100个条目(即该桶列表中的100个项)。现在,如果我所寻求的项目是桶中列表中的第100个,那么大O符号的时间复杂度将会是多少。 O(100)还是O(n)?还是其他什么?

2 个答案:

答案 0 :(得分:0)

big-O表示法的一点是你没有"假设一个桶有100个条目",你让它的条目数为n,并得到一个表达式n

对于列表中的n条目,时间复杂度为O(n),忽略您正在使用的任何哈希函数。

请注意,这是最糟糕的情况(最后一项),平均而言,搜索会在O(1)中运行。

答案 1 :(得分:0)

你的问题没有意义,因为big-O表示法表示效率随着元素数量的变化而变化,例如:元素的数量增加了1000,你还没告诉我们这种行为。

例如, 发现特定元素 的big-O表示法效率可能是:

  • 如果元素在末尾的存储区永远不会超过100个元素,那么O(1)

  • 如果元素保持在该桶中的位置100,那么即使在其后面附加了其他项目,则假设搜索将从桶的开头开始,那么它仍然是O(1)< / p>

  • 如果该桶中的元素数量保持在N / 10,则它是O(N)

  • 如果元素停留在该桶的末尾,但其中元素的数量始终是N平方的立方根,那么O(平方根(N))

  • 如果元素停留在该桶的末尾并且其中的元素数量总是大约3 * sqrt(N),那么O(sqrt(N))

正如您所看到的,O将搜索时间与元素总数相关联,但您没有足够的数据点来描述曲线。