我有一个哈希表,它由1000个元素和100个桶组成,每个桶最多100个条目。假设一个桶有100个条目(即该桶列表中的100个项)。现在,如果我所寻求的项目是桶中列表中的第100个,那么大O符号的时间复杂度将会是多少。 O(100)还是O(n)?还是其他什么?
答案 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将搜索时间与元素总数相关联,但您没有足够的数据点来描述曲线。