构造散列表以及处理冲突问题

news2024/11/24 8:49:20

目录

一. 散列表的基本概念

二. 散列表的冲突问题

三. 构造散列函数

 四. 处理冲突


一. 散列表的基本概念

        散列表简而言之就是一个根据一个对应关系(这个对应关系也叫散列函数)来存储关键码(关键字)的一个表。

例如,当散列函数为H(key)=key时,那么就相当于9号这个位置存储的关键码就是9。

二. 散列表的冲突问题

        当散列函数不一样时,可能会导致不同的关键字会存放到同一个散列地址,这就叫做冲突。

如下所示:

所以我们要想使用散列表就得解决好两个问题,一个就是构造一个好的散列函数,所选函数尽可能简单,以便提高转换速度。另外一个就是制定一个好的解决冲突的方案。

三. 构造散列函数

        构造散列函数需要考虑的因素:

1)执行速度(即计算散列函数所需时间)

2)关键字的长度

3)散列表的大小

4)关键字的分布情况

5)查找频率

下面我们学习两种用的最多的散列函数,一种是直接定址法,另外一种则就是除留余数法

直接定址法:

除留余数法:

 

 四. 处理冲突

        处理冲突的最常用方法主要有两大类:开放定址法和链地址法。

其中开放定址法又包括三种,分别是线性探测法,二次探测法和伪随机探测法。

开放定址法的基本思想就是有冲突时就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将数据存入。

如下所示:

也就是说,要是当前散列地址非空,那么线性探测法就是每次往后移动一个位置去寻找一个空位置;而二次探测法则每次往后移动1的平方,-1的平方等等的二次序列。伪随机探测法则就是每次移动的位置随机。

 链地址法建立散列表的步骤如下所示:

1)取数据元素的关键字key,计算其散列函数值(地址)。若该地址对应的链表为空,则将该元素插入此链表中;否则执行第二步来解决冲突。

2)根据选择的冲突处理方法,计算关键字key的下一个存储地址,若该地址对应的链表不为空,则利用链表的前插法或后插法将该元素插入此链表中。

链地址法的优点

1)非同义词不会冲突,无“聚集”现象。

2)链表上结点空间动态申请,更适合于表长不确定的情况。

最后总结:

1)散列表优于一些传统的查找技术。

2)链地址法优于开地址法。

3)除留余数法作散列函数优于其它类型函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1986534.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSM电子商务系统-计算机毕业设计源码68470

基于SSM框架的电子商务系统的设计与实现 摘 要 随着电子商务的迅猛发展和计算机信息技术的全面跃升,网上购物系统由于其迎合了人们诉求和期望而渗入社会生活各个层面和角落。本文设计并实现了一个基于SSM框架的电子商务系统。该系统旨在为用户提供一个舒适且快捷的…

创建第一个Spring MVC项目

上篇文章,我们围绕什么是Spring MVC进行讲述了,这篇,我们将在IDEA创建我们的第一个Spring MVC项目。 创建我们的第一个Spring MVC项目 创建项目模块 如果你出现上面小图这样的,代表你就成功创建成功了一个Web项目,当…

商品购物网页的设计

系统名称: 基于TCP网络通信及数据库的网页查询系统 文档作者:清馨 创作时间:2024-8-3 最新修改时间:2024-8-6 最新版本号: 1.0 1.背景描述: 该系统为创建网络并发服务器,通过HTTP超文本网络…

【ML】 如何训练transform model, 模型训练实现细节

【ML】 如何训练transform model, 模型训练实现细节 1. transform 训练 原理2. transform 训练TIPS2.1 copy mechanism![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/69fb84a73d0240cc9042e17ae10bbef7.jpeg) 2. bean search束搜索的工作原理:束搜索的特…

部署DR模式集群

一、配置实验环境 每台主机的防火墙和SELinux都要关掉 systemctl stop firewalld setenforce 0 1、client(eth0为nat模式) 配置好网卡IP和网关IP,然后重启网卡 nmcli connection reload nmcli connection up eth0 [rootclient ~]# cat /etc/NetworkManager/syst…

500Kg载重履带式无人车技术详解

本款500Kg载重履带式无人车,专为复杂环境与多样化任务设计,具备卓越的机动性和承载能力。其基础参数如下: 最大载重量:500Kg,适用于运输装备、物资或执行特定作业任务。 整车重量:根据具体配置有所不同&am…

解决RDP远程计算机收到非预期的证书的问题

打开证书管理 查看远程桌面证书删除 然后搜索别的同名证书,如果在受信任的根证书里面,也删除。

差旅平台如何为企业降本30%?事前管控是关键

在多员工、业务跨地域的众多企业中,差旅成本常常成为一项巨大负担。为了有效解决这一问题,许多企业开始寻求可以显著降低企业差旅成本的差旅平台。本次,我们将集中拆解上市公司中智药业集团是如何通过差旅平台分贝通实现差旅成本减少30%效果的…

微信小程序教程011-3:京西购物商城实战之Home页实现

文章目录 3、首页3.0 创建home分支3.1 配置网络请求3.2 轮播图区域3.2.1 请求轮播图的数据3.2.2 渲染轮播图的UI结构3.2.3 配置小程序分包3.2.4 点击轮播图跳转到商品详情页3.2.5 封装 uni.$showMsg() 方法3.3 分类导航区域3.3.1 获取分类导航的数据3.3.2 渲染分类导航的UI结构…

通过Sui Gas Pool扩展赞助交易gas费

Mysten Labs正在向Sui开发者社区开源Sui Gas Pool功能。这项创新服务旨在大规模赞助Sui上交易的gas费,解决高并发需求应用的用户入驻问题。 Sui的原生功能赞助交易,允许交易使用与发送者地址不同的gas coin支付gas费。这一功能允许服务补贴用户的交易成…

如何评估并选择最佳的国内项目管理软件?

国内外主流的10款国内项目管理软件对比:PingCode、Worktile、Jira 、Basecamp、Trello、Asana 、Wrike、Tower 、禅道、Teambition 。 在选择适合自己企业的项目管理软件时,很多人会感到无从下手,担心无法找到既符合预算又能满足团队需求的解…

【优秀python案例】基于百度贴吧的数据采集与文本分析设计与实现

数据采集实现: 对百度贴吧帖子数据的采集。首先,使用requests库发送HTTP请求,通过设置请求头模拟浏览器访问,获取网页的HTML内容。然后,利用BeautifulSoup库对HTML内容进行解析,以便提取所需的信息。 在循…

AI回答:C#项目编译后生成部分文件的主要职责

【引入】以ConsoleApp1为例,请问C#编译之后以下文件有啥用 1.bin\runtimes 文件夹存放什么,有什么用? bin\runtimes 文件夹存放了项目的运行时相关文件,这些文件包括了各种目标平台的运行时库。 2.bin\生成的exe文件可以在别的电脑…

(这是让文心一言生成的文心一言指令博客)3分钟学会写文心一言指令:解锁AI创作新境界

3分钟学会写文心一言指令:解锁AI创作新境界 在这个AI技术日新月异的时代,文心一言作为领先的智能语言模型,正逐步改变着我们的创作与交流方式。无论是撰写文章、创作诗歌,还是进行日常对话,文心一言都能凭借其强大的语…

记忆化搜索——1

目录 1.斐波那契数 2.不同路径 3.最长递增子序列 4.猜数字大小2 5.矩阵中的最长递增路径 1.斐波那契数 该题规律很明显,就直接放记忆化搜索的版本了 class Solution { public:int dfs(int n){if(n0||n1)//递归出口{return n;}if(f[n-1]-1)//检查是否已经记忆过…

计算机网络中拥塞控制的门限值怎么设置

拥塞避免的门限值设置主要涉及到加权随机早期检测(‌WRED)‌技术,‌这是一种拥塞避免机制,‌通过为每个队列设定一对低门限和高门限值来实现。‌具体来说,‌当队列长度小于低门限时,‌不丢弃报文&#xff0…

64 lambda 表达式

lambda 表达式常用来声明匿名函数,即没有函数名字的临时使用的小函数,常用在临时需要一个类似于函数的功能但又不想定义函数的场合。 lambda 表达式只可以包含一个表达式,不允许包含其他复杂的语句,但在表达式中可以调用其他函数…

Flink实战(10)-checkpoint容错保证

0 前言 程序在 Flink 集群运行,某个算子因为某些原因出现故障,如何处理 在故障恢复后,如何保证数据状态,和故障发生之前的数据状态一致? 1 什么是 checkpoint(检查点)? Checkpoint 能生成快照(Snapshot)。 若 Flink 程序崩…

ResNet 网络中的残差单元

今晚看《深度学习推荐系统实战》这本书,读到这样一句话,残差单元中的两层 ReLU 网络其实拟合的是输出和输入之间的“残差” x o − x i x^o-x^i xo−xi ,想看看微信读书的 AI 问书新功能对这句话怎么理解,原以为会像其他大模型一…

H20 首发!上 Neolink.AI 免费尝鲜

AI 原生服务平台 Neolink.AI 正式上线!Neolink.AI 致力于整合关键要素——算力、数据、知识、模型与企业应用,旨在为 AI-Native 应用的构建提供高效能的 GPU 算力资源和全面的一站式数据与 AI 平台产品服务。 #高性能千卡集群免费尝鲜# 今天&#xff0…