初识哈希表

news2024/11/24 21:06:09

哈希表

  • 1.引入
  • 2.哈希思想
  • 3.哈希技术的三个关键问题
    • 3.1 哈希表容量的设计
    • 3.2 哈希技术关键之二:哈希函数
      • 哈希函数构造方法
        • 哈希函数示例:线性函数
        • 哈希函数示例:除留余数法
    • 3.3 哈希技术关键之三:解决冲突策略
      • 开放定址法
        • 开放定址法——线性探测法(Linear Probing)
          • 用线性探测法创建哈希表的查找算法
          • 用线性探测法创建哈希表的插入算法
        • 开放定址法——平方探测法(Quadratic Probing)
          • 在平方探测法构造的哈希表中进行查找的算法
          • 在二次探测法构造的哈希表中进行插入操作的算法
      • 拉链法(链地址法)
        • 在拉链法构造的哈希表中查找并插入的算法
    • 解决方法的比较
  • 4. 哈希查找的性能分析

1.引入

在这里插入图片描述

2.哈希思想

在这里插入图片描述
在这里插入图片描述
哈希既是一种查找技术,也是一种存储技术。
哈希只是通过记录的关键字定位该记录,哈希表没有表达记录之间的逻辑关系。所以,哈希主要是面向查找的存储结构

  • 不适用于:
    ⁻ 范围查找
    ⁻ 多个记录有相同关键字

【冲突】
在这里插入图片描述

3.哈希技术的三个关键问题

  • 哈希表容量的设计
    保证n个记录能够存进去,又使得存储空间尽可能少

  • 哈希函数的设计
    如何设计一个运算过程简单、运算结果均匀的哈希函数

  • 冲突的处理方法
    如何采取合适的处理冲突方法来解决冲突

3.1 哈希表容量的设计

在这里插入图片描述

3.2 哈希技术关键之二:哈希函数

在这里插入图片描述

哈希函数构造方法

在这里插入图片描述
在这里插入图片描述

哈希函数示例:线性函数

在这里插入图片描述

哈希函数示例:除留余数法

在这里插入图片描述

3.3 哈希技术关键之三:解决冲突策略

在这里插入图片描述

开放定址法

在这里插入图片描述

开放定址法——线性探测法(Linear Probing)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ASL的成功与不成功计算法
在这里插入图片描述

在这里插入图片描述

用线性探测法创建哈希表的查找算法

在这里插入图片描述

用线性探测法创建哈希表的插入算法

在这里插入图片描述

开放定址法——平方探测法(Quadratic Probing)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在平方探测法构造的哈希表中进行查找的算法

在这里插入图片描述

在二次探测法构造的哈希表中进行插入操作的算法

在这里插入图片描述
在这里插入图片描述

拉链法(链地址法)

在这里插入图片描述
在这里插入图片描述

在拉链法构造的哈希表中查找并插入的算法

在这里插入图片描述

解决方法的比较

在这里插入图片描述

4. 哈希查找的性能分析

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

路径规划算法:基于动物迁徙优化的路径规划算法- 附代码

路径规划算法:基于动物迁徙优化的路径规划算法- 附代码 文章目录 路径规划算法:基于动物迁徙优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化…

C#实例:多功能Windows窗体应用程序Helloworld_WinForm

有了创建一个Windows窗体应用程序的经验,就可以开始尝试运用更多的控件实现更多丰富的功能界面。以下分享我基于项目Helloworld_WinForm使用常用C#Windows窗体控件实现一些小功能。 每一节标题为所用到的控件,全文以实际制作过程为序编制。 目录 WinFor…

Explorer.exe系统错误,电脑重启后刚开始一段时间正常,过一会桌面任务栏就卡死,可以打开任务管理器

环境: 联想E14 Win10专业版 问题描述: 1.重启系统后刚开始一段时间点击任务栏正常,过一会桌面任务栏就卡死,可以打开任务管理器,任务管理器查看shell infrastructure占用cpu比较多,网上说是微软图片查看软件导致,重置改了默认照片查看器,恢复这个应该不是主要原因 …

数组题目总结 -- 随机数问题

目录 一. O(1) 时间插入、删除和获取随机元素思路和代码:I. 博主的做法II. 东哥的做法III. 其他做法 二. 黑名单中的随机数思路和代码:I. 博主的做法II. 东哥的做法 一. O(1) 时间插入、删除和获取随机元素 题目链接:https://leetcode.cn/pr…

如何提升邮件点击率?诀窍速递

相比邮件的打开率,邮件点击率可以更好地评估邮件营销的表现,帮助营销人员评估营销活动是否有帮助推动销售、培养潜在客户或提升品牌知名度等。如何更好地提升电子邮件的点击率,本文6个小贴士来助力。 这里给大家推荐一站式客服系统SaleSmartl…

芒种忙什么呢?当然是抢个中国人民大学与加拿大女王大学金融硕士项目的入学名额了

今日是农历的芒种,大家都在忙什么呢?“芒种”一词最早出自《周礼》中的“泽草所生,种之芒种。”其中“芒”指的是在阳光照耀下如波浪般摇摆的麦芒,表明此时已经成熟可以收割了。而“种”则代表稻谷,这时候是种稻谷的最…

066:cesium flyto一个具体的点位置

第066个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置飞行定位功能,如果你知道位置的经纬度和高度,你可以使用相机的 flyTo 函数直接飞到 CesiumJS 中的那个位置。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式…

【数据存储:揭开内存中数据存储的神秘面纱】

本节重点 -- 重中之重 数据类型详细介绍 整形在内存中的存储:原码、反码、补码 大小端字节序介绍及判断 浮点型在内存中的存储解析 准备好了,开始啰,在小小的花园里面......最近被这个歌曲洗脑,但是我们并不是要唱歌,而…

分布式数据库HBase

大数据基础-分布式数据库HBase 概述HBase简介HBase与传统关系数据库的对比分析 HBase数据模型数据模型概述数据模型相关概念数据坐标 HBase的实现原理HBase功能组件表和RegionRegion的定位HBase框架结构HMasterRegionServerHBase协作组件RegionColumnFamilyKeyValue小结 HBase运…

Vue基础第四篇

一、计算属性 计算属性是基于它们的依赖进行缓存的 计算属性只有在它的相关依赖发生改变时才会重新求值 计算属性就像Python中的property&#xff0c;可以把方法/函数伪装成属性 1.通过计算属性实现名字首字母大写 <!DOCTYPE html> <html lang"en">…

k8s入门(三)之StatefulSet、Service、Ingress

一、StatefulSet操作 – 1、初体验 可以发现等待前一个启动好了&#xff0c;在启动下一个&#xff0c;因此容器的健康检查失败也会影响启动 域名&#xff1a;web-2.nginx.default.svc.cluster.local,一般写到web-2.nginx.default就可以了 [rootmaster01 ~]# cat ssweb.yaml a…

2023 年 10 个最佳 Java IDE 和编辑器

集成开发环境或 IDE 是构建软件项目所需的最关键部分之一。它们使开发变得简单高效。 IDE 通过缩短设置时间、加速开发任务、让开发人员了解最新的危险和最佳实践以及标准化开发过程以便任何人都可以参与来提高开发人员的生产力。 IDE 还可以帮助重构开发过程。它们使程序员能…

HTTP请求报文解剖

HTTP请求报文解剖 HTTP请求报文由3部分组成&#xff08;请求行请求头请求体&#xff09;&#xff1a; 下面是一个实际的请求报文&#xff1a; ①是请求方法&#xff0c;GET和POST是最常见的HTTP方法&#xff0c;除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过&#…

Thread 类基本用法详解

Thread 类基本用法详解 Thread类的作用线程创建继承 Thread, 重写 run实现 Runnable, 重写 run继承 Thread, 重写 run, 使用匿名内部类实现 Runnable, 重写 run, 使用匿名内部类使用 lambda 表达式(最推荐) 线程中断1.使用标志位来控制线程是否要停止2.使用Thread自带的标志位来…

软件测试商城项目----优惠券测试流程

优惠券冒烟测试 后台添加优惠券&#xff0c;前端领取&#xff0c;消费并成功扣除对应金额&#xff0c;如果冒烟测试不通过不进行下面的测试。 优惠券基本信息测试 &#xff08;1&#xff09;优惠券名称 &#xff08;2&#xff09;优惠券副标题 &#xff08;3&#xff09;优惠券…

ubuntu2204server虚拟机创建

ubuntu2204 虚拟机创建系统安装系统配置 虚拟机创建ubuntu2204&#xff0c;然后配置清华源&#xff0c;修改网卡已经ssh文件&#xff0c;实现远程连接 虚拟机创建 一路回车默认到创建磁盘 一路回车到自定义硬件 添加一块网盘&#xff0c;其他的是否添加自己根据实际情况&…

【C刷题笔记】找单身狗问题

目录 版本1:在数组内只有一个元素没有成对出现 版本2:在数组内有两个元素没有成对出现 第一步:异或所有元素,异或就是相同为0&#xff0c;相异为1 第二步:计算ret的二进制中哪一位元素是1 第三步:开始分组异或 1.分组: 2.异或 版本1:在数组内只有一个元素没有成对出现 单…

基于C/C++将派生类赋值给基类的详细讲解

目录 将派生类对象赋值给基类对象 将派生类指针赋值给基类指针 将派生类引用赋值给基类引用 本期推荐书目 在 C/C中经常会发生数据类型的转换&#xff0c;例如将 int 类型的数据赋值给 float 类型的变量时&#xff0c;编译器会先把 int 类型的数据转换为 float 类型再赋值&a…

华为OD机试 Java 实现【查找兄弟单词】【牛客练习题 HJ27】,附详细解题思路

一、题目描述 定义一个单词的“兄弟单词”为&#xff1a;交换该单词字母顺序&#xff08;注&#xff1a;可以交换任意次&#xff09;&#xff0c;而不添加、删除、修改原有的字母就能生成的单词。 兄弟单词要求和原来的单词不同。例如&#xff1a; ab 和 ba 是兄弟单词。 ab …

三防工业平板电脑搭载大容量聚合物锂电池,满足全天候移动式作业

在制造业、物流业等行业中&#xff0c;电脑经常会接触到水&#xff0c;因此防水是非常重要的。工业三防平板电脑采用了特殊的防水技术&#xff0c;能够在水中工作&#xff0c;即使在雨天或水花溅到电脑上时也不会受到损坏。 三防工业平板电脑采用8核ARM架构处理器&#xff0c;2…