07-7.5.3 处理冲突的方法

👋 Hi, I’m @Beast Cheng
👀 I’m interested in photography, hiking, landscape…
🌱 I’m currently learning python, javascript, kotlin…
📫 How to reach me --> 458290771@qq.com


喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻
感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
谢谢大家!🙏

1. 拉链法

1.1 插入

如何插入?

  1. 结合散列函数计算新元素的散列地址
  2. 将新元素插入散列地址对应的链表(头插法、尾插法)

1.2 查找

如何查找?

  1. 先计算地址
  2. 再对链表中的元素进行对比

1.3 删除

如何删除?

  1. 先查找元素
  2. 如果能找到,就可以删除

2. 开放定址法

2.1 基本原理

根据散列函数 H ( k e y ) H(key) H(key),求得初始散列地址。若发生冲突,如何找到“另一个空闲位置?
H i = ( H ( k e y ) + d i ) % m H_i=(H(key)+d_i)\%m Hi=(H(key)+di)%m
H i H_i Hi —— 发生第 i 次冲突时的散列地址
H ( k e y ) H(key) H(key) —— 初始散列地址
d i d_i di —— 偏移量
m m m —— 散列表表长

四种常用方法构造探测序列 d i 。注: 0 ≤ i ≤ m − 1 d_i。注:0 \leq i \leq m-1 di。注:0im1

  1. 线性探测法 —— d i = 0 , 1 , 2 , 3 , . . . , m − 1 d_i=0,1,2,3,...,m-1 di=0,1,2,3,...,m1
  2. 平方探测法 —— d i = 0 2 , 1 2 , − 1 2 , 2 2 , − 2 2 , . . . , k 2 , − k 2 。其中 k ≤ m / 2 d_i=0^2,1^2,-1^2,2^2,-2^2,...,k^2,-k^2。其中k\leq m/2 di=02,12,12,22,22,...,k2,k2。其中km/2
  3. 双散列法 —— d i = i ∗ h a s h 2 ( k e y ) 。其中 h a s h 2 ( k e y ) 是另一散列函数 d_i = i * hash_2{(key)}。其中hash_2(key)是另一散列函数 di=ihash2(key)。其中hash2(key)是另一散列函数
  4. 伪随机序列法 —— d i d_i di是一个伪随机序列,如 d i = 1 , 1 , 4 , 5 , 1 , 4 , . . . d_i=1,1,4,5,1,4,... di=1,1,4,5,1,4,...

特别注意:关于删除操作

采用开放定址法时,删除元素不能简单地将被删除元素的空间置为空,否则将阶段在它之后的探测路径,可以做一个“已删除”标记,进行逻辑删除

相关推荐

  1. 07-7.5.3 处理冲突方法

    2024-07-13 04:46:07       25 阅读
  2. pandas处理DataFrame方法汇总08

    2024-07-13 04:46:07       22 阅读
  3. 在.NET Core 中处理并发冲突方法

    2024-07-13 04:46:07       29 阅读
  4. GitHub工程git merge出现冲突处理方式

    2024-07-13 04:46:07       29 阅读
  5. git 代码冲突处理

    2024-07-13 04:46:07       32 阅读
  6. Git检测和处理版本冲突原理

    2024-07-13 04:46:07       28 阅读
  7. Oracle增加节点标准方法, /u01 损坏处理

    2024-07-13 04:46:07       30 阅读

最近更新

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

    2024-07-13 04:46:07       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 04:46:07       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 04:46:07       58 阅读
  4. Python语言-面向对象

    2024-07-13 04:46:07       69 阅读

热门阅读

  1. Vue的import什么时候用大括号

    2024-07-13 04:46:07       23 阅读
  2. Spring Boot 框架知识汇总

    2024-07-13 04:46:07       25 阅读
  3. SpringBoot源码阅读(11)——后处理器2

    2024-07-13 04:46:07       23 阅读
  4. redis的发布与订阅

    2024-07-13 04:46:07       25 阅读
  5. Vue Router 4:构建高效单页面应用的路由管理

    2024-07-13 04:46:07       25 阅读
  6. c++【入门】病狗问题

    2024-07-13 04:46:07       22 阅读
  7. UE5 04-重新加载当前场景

    2024-07-13 04:46:07       25 阅读
  8. 【泛型】学习笔记

    2024-07-13 04:46:07       28 阅读
  9. python之修饰器介绍及示例

    2024-07-13 04:46:07       20 阅读
  10. 力扣1717.删除子字符串的最大得分

    2024-07-13 04:46:07       27 阅读
  11. 说一下你对dom驱动和数据驱动的理解

    2024-07-13 04:46:07       25 阅读
  12. GESP CCF C++ 一级认证真题 2024年6月

    2024-07-13 04:46:07       28 阅读