散列技术

本文总结了散列技术的核心概念,包括如何构造散列函数(如除余法、乘余取整法等)以及解决冲突的策略(如开散列法和闭散列法)。通过对散列技术的深入探讨,阐述了如何实现数据的高效存储和检索,强调了散列函数设计的重要性以及避免冲突的策略。
摘要由CSDN通过智能技术生成

翻了一下数据结构的书,复习了散列的相关知识点,总结如下:

      散列方法的主要思想是根据结点的关键码值来确定其存储地址:以关键码值K为自变量,通过一定的函数关系h(K)计算出对应的函数值,把这个值解释为结点的存储地址,将结点存入到此存储单元中。在一般的情况下,散列表的空间必须比结点的集合大,此时虽然浪费了一定的空间,但是换取的是检索效率。散列的好坏依赖于散列函数的设计。散列函数可能对于不相等的关键码计算出相同的散列地址即发生冲突,发生冲突的两个关键码称为该散列函数的同义词。

       采用散列技术时候需要考虑的两个首要问题是:

       1)如何构造使结点“分布均匀”的散列函数?

       2)一旦发生冲突,用什么方法来解决?


 

散列函数

1. 除余法

    h(x)=x mod M

    通常M的值为某个质数或者2的幂

2. 乘余取整法

    hash(key)=floor(n*(A*key%1)); 

    A*key%1=A*key-floor(A*key)

    通常假设地址空间为p位,则n=power(2,p)。研究表明一般取A=(sqrt(5)-1)/2

3. 平方取中法

4. 数字分析法

5. 基数转换法

    将关键码值看成另一种进制的数再转换成原来进制的数,然后选其中几位作为散列地址。如key=210485,则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值