当前位置: 首页 > 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,...

特别注意:关于删除操作

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

相关文章:

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 --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…...

几何距离与函数距离:解锁数据空间中的奥秘

几何距离:直观的空间度量 几何距离,顾名思义,是我们在几何学中熟悉的距离概念,如欧几里得距离、曼哈顿距离和切比雪夫距离等。这些距离度量直接反映了数据点在多维空间中的位置关系。 欧几里得距离:最为人熟知的几何距…...

LabVIEW的Actor Framework (AF) 结构介绍

LabVIEW的Actor Framework (AF) 是一种高级架构,用于开发并发、可扩展和模块化的应用程序。通过面向对象编程(OOP)和消息传递机制,AF结构实现了高效的任务管理和数据处理。其主要特点包括并发执行、动态可扩展性和强大的错误处理能…...

gitlab 搭建使用

1. 硬件要求 ##CPU 4 核心500用户 8 核心1000用户 ##内存 4 G内存500用户 8 G内存1000用户 2. 下载 链接 3. 安装依赖 yum -y install curl openssh-server postfix wget 4. 安装gitlab组件 yum -y localinstall gitlab-ce-15.9.3-ce.0.el7.x86_64.rpm 5. 修改配置文…...

探索JT808协议在车辆远程视频监控系统中的应用

一、部标JT808协议概述 随着物联网技术的迅猛发展,智能交通系统(ITS)已成为现代交通领域的重要组成部分。其中,车辆远程监控与管理技术作为ITS的核心技术之一,对于提升交通管理效率、保障道路安全具有重要意义。 JT8…...

视频使用操作说明书-T80005系列视频编码器如何对接海康NVR硬盘录像机,包括T80005系列高清HDMI编码器、4K超高清HDMI编码器

视频使用操作说明书-T80005系列视频编码器如何对接海康NVR硬盘录像机,包括T80005系列高清HDMI编码器、4K超高清HDMI编码器。 视频使用操作说明书-T80005系列视频编码器如何对接海康NVR硬盘录像机,包括T80005系列高清HDMI编码器、4K超高清HDMI编码器 同三…...

keep-alive缓存组件

keep-alive缓存组件是Vue.js中的一个特殊组件&#xff0c;主要用于缓存内部组件的数据状态&#xff0c;以提高应用的性能和用户体验。以下是关于keep-alive缓存组件的详细解析&#xff1a; 一、作用 缓存组件状态&#xff1a;当组件在<keep-alive>内部切换时&#xff0…...

Linux上如何安装ffmpeg视频处理软件

在Linux上安装ffmpeg需要以下步骤&#xff1a; 更新系统 在开始安装之前&#xff0c;首先需要更新系统以获取最新的软件包列表和版本。在终端中执行以下命令&#xff1a; sudo apt update sudo apt upgrade安装依赖库 ffmpeg依赖于一些库和工具&#xff0c;需要先安装它们。在…...

element如何实现自定义表头?

有时候我们需要实现自定义表头,例如表头里加按钮啥的,这时候就需要用到自定义表头,但是官方对自定义表头的使用写的还是比较简单,今天就来详细说说 在需要使用自定义表头的表头上使用:render-header来启用自定义表头: <el-table-column :render-header="button&…...

OTP防重放攻击

OTP本意是一次性口令&#xff0c;比如邮箱验证码&#xff0c;短信验证码&#xff0c;或者根据totp或者hotp生成的默认30秒一变的6位数字。 不过开发者要注意&#xff0c;必须要在验证成功后失效那个验证码&#xff0c;不然就会导致重放攻击。 对于邮箱验证码&#xff0c;服务器…...

Oracle数据库加密与安全

Wallet简介&#xff1a; Oracle Wallet(即内部加密技术TDE( Transparent DataEncryption&#xff09; TDE是 Oracle10gR2中推出的一个新功能,使用时要保证Oracle版本是在10gR2或者以上 Wallet配置&#xff1a; 1.创建一个新目录&#xff0c;并指定为Wallet目录 /home/oracle…...

【YOLO格式的数据标签,目标检测】

标签为 YOLO 格式&#xff0c;每幅图像一个 *.txt 文件&#xff08;如果图像中没有对象&#xff0c;则不需要 *.txt 文件&#xff09;。*.txt 文件规格如下: 每个对象一行 每一行都是 class x_center y_center width height 格式。 边框坐标必须是 归一化的 xywh 格式&#x…...

Memcached内存碎片清理术:优化缓存性能的策略

标题&#xff1a;Memcached内存碎片清理术&#xff1a;优化缓存性能的策略 内存碎片是Memcached在长期运行过程中常见的问题&#xff0c;它会降低缓存效率并影响性能。作为高效的分布式内存缓存系统&#xff0c;Memcached提供了多种内存碎片整理策略。本文将详细介绍这些策略&…...

禁止使用存储过程

优质博文&#xff1a;IT-BLOG-CN 灵感来源 什么是存储过程 存储过程Stored Procedure是指为了完成特定功能的SQL语句集&#xff0c;经编译后存储在数据库中&#xff0c;用户可通过指定存储过程的名字并给定参数&#xff08;如果该存储过程带有参数&#xff09;来调用执行。 …...

Flink异常:org/apache/hadoop/hive/ql/parse/SemanticException

在flink项目中跑 上面这段代码出现如下这个异常&#xff0c; java.lang.NoClassDefFoundError: org/apache/thrift/TException 加上下面这个依赖后不报错 <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId…...

Java:构造函数与对象

第一章&#xff1a;构造函数揭秘 —— 创造者的第一次触碰 构造函数&#xff0c;顾名思义&#xff0c;是用于创建和初始化对象的特殊方法。它没有返回类型&#xff0c;名字与类名一致。构造函数是对象诞生的第一步&#xff0c;也是最至关重要的一步。让我们通过一个生动的例子…...

Leetcode(经典题)day1

删除有序数组中的重复项|| 80. 删除有序数组中的重复项 II - 力扣&#xff08;LeetCode&#xff09; 和之前的删除有序数组中的重复项|相似&#xff0c;这里是要求最多出现两次&#xff0c;所以多加一个变量来记录出现次数即可&#xff0c;整体上还是使用双指针&#xff0c;…...

k8s record 20240710 监控

不是adaptor 是opetator 案例 监控有了&#xff0c;日志搜集呢&#xff1f; 一、kubelet 的小弟 kubelet — 负责维护容器的生命周期&#xff0c;节点和集群其他部分通信 cAdvisor 集成在 Kubernetes 的 kubelet 中&#xff0c;能够自动发现和监控集群中所有的容器。dockers…...

pdf工具

iLovePDF | 为PDF爱好者提供的PDF文件在线处理工具 https://www.ilovepdf.com/zh-cn 图片 pdf 合并成一个pdf也可以拆分...

百度文心4.0 Turbo开放,领跑国内AI大模型赛道!

百度文心4.0 Turbo开放&#xff0c;领跑国内AI大模型赛道&#xff01; 前言 文心一言大模型 就在7月5日&#xff0c;在2024世界人工智能大会 (WAIC) 上&#xff0c;百度副总裁谢广军宣布文心大模型4.0 Turbo正式向企业客户全面开放&#xff01;这一举动直接引发了业界的关注。那…...

基于卷积神经网络的忍者像素绘卷风格迁移:从原理到实战部署

基于卷积神经网络的忍者像素绘卷风格迁移&#xff1a;从原理到实战部署 1. 引言&#xff1a;当AI遇见像素艺术 想象一下&#xff0c;你手头有一张普通的照片&#xff0c;但希望它能变成复古游戏里的忍者像素风格——就像那些经典的街机游戏画面。这听起来像是需要专业美术师才…...

Z-Image-ComfyUI场景应用:为社交媒体快速生成配图,提升内容创作效率

Z-Image-ComfyUI场景应用&#xff1a;为社交媒体快速生成配图&#xff0c;提升内容创作效率 1. 社交媒体内容创作的痛点与解决方案 每天运营社交媒体账号时&#xff0c;你是否也面临这样的困境&#xff1a;精心撰写的文案已经完成&#xff0c;却卡在配图制作环节&#xff1f;…...

AI结对编程:与快马AI对话式迭代,智能优化你的系统ER图设计

AI结对编程&#xff1a;与快马AI对话式迭代&#xff0c;智能优化你的系统ER图设计 最近在做一个员工管理系统的数据库设计&#xff0c;发现ER图设计是个需要反复推敲的过程。传统方式下&#xff0c;每次修改都要手动调整图形&#xff0c;效率很低。直到尝试了InsCode(快马)平台…...

激发创意:利用快马平台ai模型辅助设计与优化cmhhc算法

激发创意&#xff1a;利用快马平台AI模型辅助设计与优化CMHHC算法 最近在做一个字符串压缩相关的项目&#xff0c;需要实现一个自定义的压缩算法CMHHC。这个算法的核心思想其实很简单&#xff1a;对于连续出现的相同字符&#xff0c;用该字符加上出现次数来表示。比如"aa…...

C语言调用Omni-Vision Sanctuary轻量级推理接口(C API)教程

C语言调用Omni-Vision Sanctuary轻量级推理接口&#xff08;C API&#xff09;教程 1. 引言&#xff1a;为什么选择C API&#xff1f; 在嵌入式设备和资源受限的环境中&#xff0c;Python运行时往往显得过于臃肿。Omni-Vision Sanctuary提供的C语言接口&#xff08;C API&…...

实战避坑:在Windows上用C++/WinRT搞定双模蓝牙(EDR+Ble)通信的完整流程

实战避坑&#xff1a;在Windows上用C/WinRT搞定双模蓝牙&#xff08;EDRBle&#xff09;通信的完整流程 蓝牙技术在现代设备中无处不在&#xff0c;但对于开发者而言&#xff0c;实现Windows桌面应用与双模蓝牙设备&#xff08;同时支持经典蓝牙EDR和低功耗蓝牙BLE&#xff09;…...

DevOps工具链集成:GitLab CI、Jenkins与Argo CD如何选?

DevOps工具链集成&#xff1a;GitLab CI、Jenkins与Argo CD如何选&#xff1f; 在DevOps实践中&#xff0c;工具链的选型直接影响交付效率与系统稳定性。GitLab CI、Jenkins和Argo CD作为主流工具&#xff0c;分别覆盖持续集成&#xff08;CI&#xff09;、持续交付&#xff0…...

用STM32F103的TIM3实现旋转编码器方向判断:AB相相位差处理的5个关键细节

STM32F103旋转编码器方向判断实战&#xff1a;TIM3相位差处理的5个核心技巧 旋转编码器作为工业控制和人机交互中广泛使用的传感器&#xff0c;其方向判断的准确性直接影响系统控制的可靠性。本文将深入探讨基于STM32F103的TIM3定时器实现旋转编码器方向判断的关键技术细节&…...

深入解析Android系统分区:从启动到恢复的完整指南

1. Android系统分区基础认知 当你第一次拆解Android系统时&#xff0c;可能会被各种分区名称搞得晕头转向。其实这些分区就像我们电脑里的C盘、D盘一样&#xff0c;各自承担着不同的职责。我刚开始接触时也犯过糊涂&#xff0c;直到有次刷机把boot分区刷坏&#xff0c;手机直接…...

告别桌面混乱:NoFences让文件管理效率提升80%的空间收纳方案

告别桌面混乱&#xff1a;NoFences让文件管理效率提升80%的空间收纳方案 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 每天在杂乱的桌面图标中寻找文件&#xff0c;就像在堆…...