Hash

散列(Hash):

书中的定义:通过一些计算,把关键码值映射到数组中的位置来访问记录,这个过程称为散列。

我的理解:输入(关键码)------函数(处理)------>输出(地址,位置)。根据关键码,经由一种函数处理,存储到特定的位置或进行访问的过程。

该函数为散列函数存放记录的数组成为散列表

散列表的构建方法:

  • 直接寻址法:直接将关键字作为索引
  • 数据分析法:在已知数据的前提下,对数个各个位进行分析,将数值能够均匀出现的位作为地址。(不均匀:比如某一位只是出现1,9,或者其他某几位;均匀:则该位大部分数都会出现,而且出现次数差不多)
  • 除留取余法:将取余的结果作为地址(注意:一般取余的数是不大于表长的素数,或者是不小于20二等素数。)
  • 折叠法:将关键字分成多个长度相同的部分,最后一部分可以长度不同,将求出各个部分的叠加和作为地址(一般是针对较长的关键字,划分的长度以表长为基准)。而折叠又分为移位叠加和边界叠加。
    • 移位叠加:最低位对齐
    • 来回叠加:比如第一部分正序,第二部分倒序…来回叠加
  • 平方取中法:算出关键字的平方,将其中的某几位作为地址
  • 随机数法:将关键字的随机数作为地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值