Yog*_*ity 2 java algorithm hash hashtable data-structures
我在数据结构研讨会上听到,我们可以将密钥分成数字组,然后添加组.这确保了所有数字都贡献了哈希码.组中的位数对应于数组的大小.
例如,我有一个机器号说424-124-9675
,如何使用折叠技术制作哈希函数?
有两种类型的折叠方法Fold shift
和使用Fold boundary
.
折叠转移
您可以将密钥分成大小与所需地址大小相匹配的部分.只需添加部件即可获得所需的地址.
密钥:123456789,所需地址的大小为3位数.
123 + 456 + 789 = 1368.为了将大小减小到3,删除1或8,因此密钥分别为368或136.
折叠边界
你再次将键分成大小与所需地址大小相匹配的部分.但是现在你也应用折叠,除了中间部分,如果它在那里.
密钥:123456789,所需地址的大小为3位数
321(折叠应用)+ 456 + 987(折叠应用)= 1764(丢弃1或4)