什么是散列中的折叠技术以及如何实现它?

Yog*_*ity 2 java algorithm hash hashtable data-structures

我在数据结构研讨会上听到,我们可以将密钥分成数字组,然后添加组.这确保了所有数字都贡献了哈希码.组中的位数对应于数组的大小.

例如,我有一个机器号说424-124-9675,如何使用折叠技术制作哈希函数?

Sum*_*eet 5

有两种类型的折叠方法Fold shift和使用Fold boundary.

折叠转移

您可以将密钥分成大小与所需地址大小相匹配的部分.只需添加部件即可获得所需的地址.

密钥:123456789,所需地址的大小为3位数.

123 + 456 + 789 = 1368.为了将大小减小到3,删除1或8,因此密钥分别为368或136.

折叠边界

你再次将键分成大小与所需地址大小相匹配的部分.但是现在你也应用折叠,除了中间部分,如果它在那里.

密钥:123456789,所需地址的大小为3位数

321(折叠应用)+ 456 + 987(折叠应用)= 1764(丢弃1或4)