哈希-hash

本文介绍了哈希的概念,通过引例展示了哈希表的优势,探讨了哈希函数的构造方法,包括直接定址法、除后余数法和随机数法,并详细阐述了处理冲突的开放地址法、链地址法、再哈希法和公共溢出区。此外,还通过实例说明了哈希在实际问题中的应用。
摘要由CSDN通过智能技术生成

一. 概念

1.引例    

有线性表(1,75,324,43,1353,90,46,…  )

目的:查找值为90的元素

常见做法:    

1、通过一维数组进行遍历查找 (依次比较)( O(n) )    

2、如果关键字有序,可采用二分查找 ( O(logn) )

缺陷:当数据规模极大的时候,查找将会变得效率低下。 

 

假设:如果知道待查询关键字的地址,则只需要一次就可以查到。

问题:如何立刻知道关键字的地址?

Hash函数: 根据关键字直接计算出元素所在位置的函数。

例:设哈希函数为:H(K)=K/3+1,则构造关键字序列为 1、2、5、9、11、13、16、21、27 的哈希表(散列表)为: 

2.哈希表   

  根据设定的哈希函数 H(key) 和处理冲突的方法将一组关键字映象到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“象”作为记录在表中的存储位置,这种表便称为哈希表,这一映象过程称为哈希造表或散列,所得存储位置称为哈希地址或散列地址。 

  简单的说,哈希表可以根据一个key值来直接访问数据。其实,哈希表其实本质上就是一个数组

3.冲突

  两个不同的关键字具有相同的存储位置。(多个关键字通过hash函数得到的地址是同一个地址) 

  

  在哈希存储中,若发生冲突,则必须采取特殊的方法来解决冲突问题,才能使哈希查找能顺利进行。虽然冲突不可避免,但可以减少冲突的发生,发生冲突的可能性与三个方面因素有关。

   1、装填因子α        

  装填因子是指哈希表中己存入的元素个数 n 与哈希表的大小 m 的比值,即α=n/m。α越小,发生冲突的可能性越小,反之,发生冲突的可能性就越大。但是,α太小又会造成大量存贮空间的浪费,因此必须兼顾存储空间和冲突两个方面。

   2、所构造的哈希函数         

  构造好的哈希函数,使冲突尽可能的少。

   3、解决冲突的方法           

  设计有效解决冲突的方法 。 

 

二.哈希函数的构造方法

构造哈希函数的方法很多,下面我们来列举常见的几种&#x

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值