数据结构--哈希表,哈希函数(或者散列表、散列函数)

2023-09-13 18:49:07

 目录

哈希表的定义

处理冲突的方法--拉链法 

散列查找

常见的散列函数(构造哈希函数)

除留余数法

直接定址法

 数字分析法

平方取中法

处理冲突的方法--开放定址法

(1)线性探测法: 

(2)平方探测法

(3)伪随机序列发 

处理冲突的方法--再散列法 

总结 


 哈希表的定义

处理冲突的方法--拉链法 

散列查找

圈出来部分,分别是除了第一层查找1次,其他每个元素查找次数 

 

装填因子a=表中记录数/散列表长度

 

常见的散列函数(构造哈希函数)

除留余数法

直接定址法

 数字分析法

平方取中法

 

处理冲突的方法--开放定址法

 

(1)线性探测法: 

 把元素1放到数组2位置,然后接着算68,20....

  

 68和20按照哈希函数取余,分别是3,7,而数组下标3,7还没有存放与元素,所以没有冲突,可以直接放进数组对应的下标里面,如图:

接着放84时,按照哈希函数取余时6,6已经有元素放了,所以按照线性推测法 公式算,依次往后找,找到8下标没有元素,所以84放到下标8那里

存放84的结果如下:

 

然后是27: 

 

存放27的结果

 

删除操作 

 

 

(2)平方探测法

 

 

(3)伪随机序列发 

 

 存放结果:

处理冲突的方法--再散列法 

总结 

装填因子,线性探测法很重要

 

更多推荐

从零开始训练大模型

Task05从零开始训练大模型目录1.预训练阶段1.1TokenizerTraining1.2LanguageModelPreTraining1.3数据集清理1.4模型效果评测2.指令微调阶段(InstructionTuningStage)2.1SelfInstruction2.2开源数据集整理2.3模型的评测方法3.

C++之容器std::queue类empty、size、front、back、push、emplace、pop、swap应用总结(二百二十四)

简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀人生格言:人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.更多原创,欢迎关注:Android系统攻城狮1.前言本篇目的:C++之

【云原生】kubernetes中pod(进阶)

目录一、资源限制业务cpu内存1.1CPU资源单位1.2内存资源单位示例1示例2:二、健康检查:又称为探针(Probe)2.1探针的三种规则2.2Probe支持三种检查方法2.3示例示例1:exec方式示例3:tcpSocket方式示例4:就绪检测示例5:就绪检测2示例:启动、退出动作扩展pod的状态Container

Element树形控件使用过程中遇到的问题及解决方法

1.需求1点击编辑按钮,出现修改组织弹窗,且将点击时的组织名称返现在输入框中。思路是点击编辑按钮,取到节点点击时返回的data信息中的label进行赋值即可。<el-treestyle="margin-top:20px":data="organizationTreeData"node-key="id"default-e

mysql死锁排查及解决

MySQL死锁是在多个并发事务同时请求相同资源时发生的一种情况,其中每个事务都在等待对方释放资源,从而导致数据库无法继续执行。死锁的排查和解决通常需要以下步骤:1.检测死锁:MySQL通常会在错误日志中记录死锁信息。可以通过以下方式检测死锁:SHOWENGINEINNODBSTATUS;查找"InnoDB"部分,寻找"

Win10编译chrome

一、系统准备windows10以上版本硬盘空余空间100G以上,磁盘格式为NTFS内存8G以上,推荐32G需要科学上网卸载杀毒软件(注意重启系统)二、安装VisualStudio2022VisualStudio2022(>=17.0.0)编译chromium时需要VisualStudio的支持。在windows操作系统

Android Media3 ExoPlayer 开启缓存功能

ExoPlayer开启播放缓存功能,在下次加载已经播放过的网络资源的时候,可以直接从本地缓存加载,实现为用户节省流量和提升加载效率的作用。方法一:采用ExoPlayer缓存策略第1步:实现Exoplayer参考Exoplayer官网Releasenotes:对应关系:2.19.0(2023-07-05)--Androi

黑马JVM总结(十一)

(1)垃圾回收概述前面我们学了堆,里面有一个垃圾回收的机制(2)判断垃圾_引用计数指只要有一个对象被其他变量所引用,我们就让这个对象的计数加1,有个一变量不在引用,让它的计数减一,当这个对象的计数变为0的时候,说明没有变量引用它了,那么他就可以作为一个垃圾进行一个回收,但是引用计数存在一个弊端:存在循环引用问题:a对象

Pytorch实现MNIST字符识别

1.下载mnist.pkl.gz网址:http://www.iro.umontreal.ca/~lisa/deep/data/mnist/mnist.pkl.gz数据集文件夹路径是data2/mnist/mnist.pkl.gz2.读取数据frompathlibimportPathimportmatplotlib.py

设计模式:状态模式

目录组件代码示例源码中使用优缺点总结状态模式(StatePattern)是一种行为型设计模式,用于解决对象在不同状态下的行为变化问题。状态模式允许对象在内部状态发生改变时改变其行为,使得对象的行为可以根据状态的改变而灵活变化。在状态模式中,对象的行为会根据其内部状态的改变而变化,但对外部来说,对象的接口保持一致。状态模

设计模式之十:状态模式

状态模式通过改变对象内部的状态来帮助对象控制自己的行为。这是一张状态图,其中每个圆圈都是一个状态。最简单,第一反应的实现就是使用一个变量来控制状态值,并在方法内书写条件代码来处理不同情况。packageheadfirst.designpatterns.state.gumball;publicclassGumballMa

热文推荐