链式哈希表的时间复杂度是多少?
What is the time complexity in chained hash table
我有一个哈希表,它由1000个元素和100个桶组成,每个桶最多有100个条目。假设一个bucket有100个条目(即该bucket的列表中有100个条目)。现在用大0符号表示的时间复杂度是多少如果我要找的东西是桶列表中的第100个。O(100)还是O(n)?还有别的吗?
大0表示法的要点是,您不"假设一个桶有100个条目",您让它的条目数为n
,并得到一个以n
为单位的表达式。
对于列表中的n
项,时间复杂度将为O(n)
,忽略您使用的任何散列函数。
注意,这是最坏的情况(最后一项),平均而言,搜索在O(1)
中运行。
你的问题没有意义,因为大o符号表达了效率如何随着元素数量的变化而变化,例如元素数量增加超过1000,而你没有告诉我们这种行为。
例如,查找特定元素的大o符号效率可能是:
-
如果元素位于桶尾的元素永远不会超过100个,那么O(1)
-
如果元素停留在桶的位置100,那么即使在它之后追加了更多的项,假设搜索将从桶的开始开始,那么它仍然是0 (1)
-
如果该bucket中的元素个数保持在N/10,并且你不能指望该特定元素在bucket的列表中保持固定位置,那么它是O(N)
-
如果元素停留在bucket的末尾,但其中的元素个数总是N的立方根的平方,那么O(平方(立方根(N)))
-
如果元素停留在bucket的末尾,并且其中的元素数量总是在3 * sqrt(N)左右,则0 (sqrt(N))
可以看到,O表示搜索时间与元素总数的关系,但是您没有给出足够的数据点来描述曲线。
相关文章:
- while循环中while循环的时间复杂度是多少
- 函数的时间复杂度是多少?
- 将树节点添加到向量向量中的 n 元树遍历的平均和最坏情况时间复杂度是多少?
- 给定C++代码的时间复杂度是多少?
- 将数组的元素插入映射的时间复杂度是多少?
- 以下递归代码的时间复杂度是多少?
- 在C++中修改字符串的BigO时间复杂度是多少
- 这个算法的运行时间复杂度是多少?你是如何分析的
- 此特定代码的时间复杂度是多少?
- % 运算符的时间复杂度C++是多少?
- 三和算法的时间复杂度是多少
- 以下代码片段的时间复杂度是多少?
- 用于搜索的给定代码的时间复杂度是多少
- std::map的时间复杂度是多少
- 遍历二维数组的时间复杂度是多少
- 这个代码(来自leetcode)的时间复杂度是多少
- 以下代码的时间复杂度是多少
- 这个算法的时间复杂度是多少
- 以下循环的时间复杂度是多少
- 一个清晰的函数的时间复杂度是多少,根据大 O,是 std::map