算法学习-哈希表及哈希查找

基于树等的查找方法,都是通过一系列对比来查找的,查找效率由比较一次所缩小的查找范围决定。

而理想的查找情况是直接根据关键码得到其对应的数据元素位置。

原理:

    将待存储元素经过某一函数特定转换为一个值,将这个值作为地址,将这个待存储元素存入这个地址中。

    当要查找时,则将待查找的元素经过同一转换函数得到一个转换值,即地址,然后去这个地址获取数据,与待查找元素比较是否一致,一致则查找成功。也称为哈希法(杂凑法)。

说明:

    转换函数为哈希函数,所构造的表为哈希表。

注意:

  哈希函数需要对不同的元素转换出不同的值。但考虑到地址的有限性而元素理论上无限,可能存在经过哈希函数转换后,不同的元素映射到同一个哈希地址上,这个就是冲突。

问题:

  1.如何构造哈希函数。(尽可能简单,运算尽可能快。且转换出的值应分布均匀,减少空间浪费)

  2.如何解决冲突问题。

性能分析:

  哈希查找法的性能依赖于产生冲突的多少,产生冲突多,查找效率就低。主要取决于哈希函数的构造,处理冲突的方法以及元素个数对比哈希表长度的比例。

  依地址查找为O(1),而不同的解决冲突的方法,其对应的时间复杂度可能不相同。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值