当前位置: 首页 > news >正文

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,...

特别注意:关于删除操作

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

http://www.lryc.cn/news/398783.html

相关文章:

  • 几何距离与函数距离:解锁数据空间中的奥秘
  • LabVIEW的Actor Framework (AF) 结构介绍
  • gitlab 搭建使用
  • 探索JT808协议在车辆远程视频监控系统中的应用
  • 视频使用操作说明书-T80005系列视频编码器如何对接海康NVR硬盘录像机,包括T80005系列高清HDMI编码器、4K超高清HDMI编码器
  • keep-alive缓存组件
  • Linux上如何安装ffmpeg视频处理软件
  • element如何实现自定义表头?
  • OTP防重放攻击
  • Oracle数据库加密与安全
  • 【YOLO格式的数据标签,目标检测】
  • Memcached内存碎片清理术:优化缓存性能的策略
  • 禁止使用存储过程
  • Flink异常:org/apache/hadoop/hive/ql/parse/SemanticException
  • Java:构造函数与对象
  • Leetcode(经典题)day1
  • k8s record 20240710 监控
  • pdf工具
  • 百度文心4.0 Turbo开放,领跑国内AI大模型赛道!
  • Vue3 defineProps的使用
  • 面向对象进阶基础练习
  • iPhone删除所有照片的高效三部曲
  • OceanBase 配置项系统变量实现及应用详解(2):系统变量的定义及使用场景
  • 本地部署,去除动漫图像背景Anime Remove Background
  • wireshark与tcpdump使用
  • 【密码学】密码学中的四种攻击方式和两种攻击手段
  • 网络层的角色与重要性:互联网通信的关键
  • Transformer模型:WordEmbedding实现
  • 如何压缩pdf文件大小,怎么压缩pdf文件大小
  • Spring Boot集成Atomix快速入门Demo