Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 链中哈希表中成功搜索的平均成本_Performance_Algorithm_Hashmap_Chaining_Asymptotic Complexity - Fatal编程技术网

Performance 链中哈希表中成功搜索的平均成本

Performance 链中哈希表中成功搜索的平均成本,performance,algorithm,hashmap,chaining,asymptotic-complexity,Performance,Algorithm,Hashmap,Chaining,Asymptotic Complexity,我到处寻找这个,但我不明白为什么是O(1+a/2) 其中a是荷载系数。有人能一步一步地解释一下吗。让哈希表中的元素数为n。 这意味着哈希表中有n/a单元格总数(/行),每个单元格包含一个元素列表。这是荷载系数的定义 因此,与每个这样的单元相关联的元素的预期数量是n/(n/a)=a。 未排序列表中的线性搜索需要遍历一半的元素,直到平均找到正确的元素(我们假设这是一次成功的搜索),因此它需要遍历A/2元素 1因子来自于访问哈希表本身中的正确列表。未排序列表中的线性搜索需要遍历一半的元素。这是我不明白

我到处寻找这个,但我不明白为什么是O(1+a/2)
其中a是荷载系数。有人能一步一步地解释一下吗。

让哈希表中的元素数为
n

这意味着哈希表中有
n/a
单元格总数(/行),每个单元格包含一个元素列表。这是荷载系数的定义

因此,与每个这样的单元相关联的元素的预期数量是
n/(n/a)=a


未排序列表中的线性搜索需要遍历一半的元素,直到平均找到正确的元素(我们假设这是一次成功的搜索),因此它需要遍历
A/2
元素


1
因子来自于访问哈希表本身中的正确列表。

未排序列表中的线性搜索需要遍历一半的元素。这是我不明白的。为什么会这样?可能是必需元素在列表的末尾,所以为什么我们只需要遍历一半?它是平均值:有时是第一个,有时是最后一个,平均是元素数的一半。@user4129542我省略了“average”一词,这在这里很重要。直觉上,它有50%的几率成为最后的元素,50%的几率成为第一。(更彻底的证明可以在0,…,U为U/2的证明中找到