Hash table - 为什么哈希函数和压缩函数要分开?
Hash table - why should hash function and compression function be separate?
我想知道为什么在使用散列时需要将散列函数和压缩函数分开table?
AFAIK,首先哈希函数计算索引,压缩函数用于缩小索引范围。
当值被插入到数组中时,压缩键(索引)不是唯一重要的吗?
如果我对您的术语的理解正确,散列函数应该适用于任何大小的数组,而压缩函数特定于当前大小。因此哈希函数可能 return 相同的 32 位数字,例如,压缩将计算所述数字的模数以了解使用哪个数组索引。由于散列 table 的大多数实现会在 table 更改时动态收缩和增长,因此将两者分开是有意义的。
我想知道为什么在使用散列时需要将散列函数和压缩函数分开table?
AFAIK,首先哈希函数计算索引,压缩函数用于缩小索引范围。 当值被插入到数组中时,压缩键(索引)不是唯一重要的吗?
如果我对您的术语的理解正确,散列函数应该适用于任何大小的数组,而压缩函数特定于当前大小。因此哈希函数可能 return 相同的 32 位数字,例如,压缩将计算所述数字的模数以了解使用哪个数组索引。由于散列 table 的大多数实现会在 table 更改时动态收缩和增长,因此将两者分开是有意义的。