我正在查看这个StackOverflow 答案以更好地理解散列并看到以下内容(关于我们需要在恒定时间内获取存储桶大小的事实):
如果您使用线性探测或双散列等方法,找到所有散列到相同值的项目意味着您需要对值进行散列,然后遍历表中非空项目的“链”以查找其中有多少哈希到相同的值。但是,这与散列到相同值的项目数量不是线性的——它与散列到相同或冲突值的项目数量成线性关系。
这意味着它“与散列到相同或冲突值的项目数量呈线性关系”是什么意思?它对哈希表中的项目总数不是线性的吗,因为它可能需要在线性探测期间遍历每个值?我不明白为什么它只需要通过那些相撞的。
例如,如果我在散列表上使用线性探测(步长 1)并且我有不同的键(不冲突,所有散列到唯一值)映射到奇数索引槽1,3,5,7,9.....
然后,我想插入许多所有散列的键到 2,所以我用这些键填充了所有偶数索引点。如果我想知道有多少键哈希为 2,我不需要遍历整个哈希表吗?但我不只是遍历散列到相同或冲突值的项目,因为奇数索引槽没有冲突。