数据结构——散列表

参考视频:懒猫老师-数据结构-(60)散列表(哈希表)_哔哩哔哩_bilibili

思路:在存储位置和关键码之间建立一个确定的对应关系。

概念

1、散列表:连续的存储空间

2、散列函数:将关键码映射到适当位置的函数

3、散列地址:由散列函数所得的存储地址

散列技术既是一种存储技术也是查找技术。

散列函数的设计方法

1、直接定址法

散列函数是关键码的线性函数,即H(key)=a*key+b

使用情况:事先知道关键码,且关键码集合不是很大连续性好

2、除留余数法(重要)

通常情况下,哈希表的长度n通常选取比元素个数大的质数,以此来减少冲突。

此方法为最简单,最常用的方法,并且不要求事先知道关键码的分布。

3、数字分析法

根据关键码在各个位上的分布情况,选取分布比较均匀的若干位组成散列地址(学号常用)。

4、平方取中法

5、折叠法

将关键码从左到右分割成位数相等的几部分,将这几部分叠加求和,取后几位作为散列地址。

适用于关键码位数很多的情况

解决冲突的办法

1、开放地址法(闭散列表)

由关键码得到的散列地址一旦产生了冲突,就去寻找一个空的散列地址,并将记录存入。

寻找下一个空的散列地址的方法:

①线性探测法

元素发生冲突时,后来的元素不断向后退一格

②二次探测法

两个元素发生冲突时,后来的元素先向后试探,如果不行的话在向左试探,都不行的话那就先后向左右试探2的n次方。

③随机探测法

2、拉链法(开散列表)

散列查找的性能分析

影响产生冲突的因素

1、散列函数是否均匀

2、处理冲突的方法

3、散列表的装载因子

相关推荐

  1. 数据结构===列表

    2024-05-12 18:36:03       32 阅读
  2. 数据结构】——查找、列表简答题模板

    2024-05-12 18:36:03       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-12 18:36:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-12 18:36:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-12 18:36:03       82 阅读
  4. Python语言-面向对象

    2024-05-12 18:36:03       91 阅读

热门阅读

  1. AES对称加密算法原理、C++代码示例

    2024-05-12 18:36:03       19 阅读
  2. Android 面试常见知识点总结(持续更)

    2024-05-12 18:36:03       30 阅读
  3. 知网相关文章采集

    2024-05-12 18:36:03       32 阅读
  4. [力扣题解]53. 最大子数组和

    2024-05-12 18:36:03       32 阅读
  5. 哈希表第5/9题--两数之和

    2024-05-12 18:36:03       30 阅读
  6. let和const命令

    2024-05-12 18:36:03       29 阅读
  7. 网络工程师----第二十三天

    2024-05-12 18:36:03       30 阅读
  8. 图搜索算法详解

    2024-05-12 18:36:03       24 阅读
  9. MySQL视图简介

    2024-05-12 18:36:03       27 阅读