我对哈希概念有一些理解问题,如下所示:
假设,我已经实现了将键作为数字的哈希表(一维数组,比如A[100] )。我有一个简单的哈希函数H(Key) % Table_Size,它将目标索引返回到哈希表中(同时访问与此特定键关联的值)。
假设,我想将0(键)存储到表中。当我将此键传递给H(哈希函数)时,它会返回随机索引,例如 25。
数组 A 中的这个位置有 2 种可能性(索引为 25):
- A[25] 包含除0以外的一些键,已存储(以前)
- A[25] 包含0
第一种可能性有冲突并且很容易识别(因为当前密钥:0 和已存储的密钥:k 不同),所以第一个没有问题。
但是,对于第二个,我怎么知道天气是否有碰撞?
据我所知,哈希表或数组将是主内存的一部分。假设 A[25] 存储在内存位置 500 中。
我怎么知道这个位置(500)实际上是空的还是已经被其他键填充了?
存储单元的什么状态或值代表EMPTY或NULL或UNUSED位置?
而且,如果我想将0作为密钥存储到此位置进行碰撞检查怎么办?
我目前假设如果任何内存位置是EMPTY或NULL或UNUSED,那么它将处于 RESET 状态(所有单元格都是 0)。这是真的 ?
这可能是个愚蠢的问题,但我想知道在这种情况下如何检查碰撞。
--
提前致谢!!(海得拉巴海泰因)