散列查找

散列(hash)是存储数据的又一种方法,同顺序、链接和索引一样。
散列存储的基本思想
以数组中的每个元素的关键字K为自变量,通过一种函数h(K)计算出函数值,
把这个值解释为一块连续存储空间(即数组空间或文件空间)的单元地址(即下标),将该元素存储到这个单元中。
散列存储中使用的函数h(K),称为散列函数或哈希函数,它实现关键字到存储地址的映射(或称转换),h(K)的值称为散列地址或哈希地址;
使用的数组空间是数据进行散列存储的地址空间,所以被称之为散列表或哈希表(hash list或hash table)。
在散列表上进行查找时,首先根据给定的关键字K,用与散列存储时使用的同一散列函数h(K)计算出散列地址,然后按此地址从散列表中取出对应的元素。

为了散列存储集合,假定选取的散列函数为:
h(K)=K % m

如集合s={56,45,34,44,78,13,14,17,43,54,90,46};
那么 h(56)=56 % 13
h(45)=45 %13
h(34)=34 % 13
h(44)=44 % 13
h(78)=78 % 13
h(13)=13 % 13
h(14)=14 %13
h(17)=17 % 13=17
h(43)=43 %13=4
h(54)=54 % 13=2
h(90)=90 %13=12
h(46)=46 % 13=7

散列函数

  1. 直接定址法
    h(K)=K+C
    2. 除留余数法
    除留余数法是用关键字K除以散列表长度m所得余数作为散列地址的方法。对应的散列函数h(K)为:
    h(K) = K % m
    3. 数字分析法
    数字分析法是取关键字中某些取值较分散的数字位做为散列地址的方法。
    4. 平方取中法
    平方取中法是取关键字平方的中间几位作为散列地址的方法,具体取多少位视实际要求而定。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值