哈希函数算法

news2025/5/26 0:22:16

概述

为了实现哈希集合这一数据结构,有以下几个关键问题需要解决:

  • 哈希函数:能够将集合中任意可能的元素映射到一个固定范围的整数值,并将该元素存储到整数值对应的地址上。
  • 冲突处理:由于不同元素可能映射到相同的整数值,因此需要在整数值出现「冲突」时,需要进行冲突处理。总的来说,有以下几种策略解决冲突:
    • 链地址法:为每个哈希值维护一个链表,并将具有相同哈希值的元素都放入这一链表当中。

    • 开放地址法:当发现哈希值 hhh 处产生冲突时,根据某种策略,从 h h h出发找到下一个不冲突的位置。例如,一种最简单的策略是,不断地检查 h + 1 , h + 2 , h + 3 , … h + 1 , h + 2 , h + 3 , … h + 1 , h + 2 , h + 3 , … h+1,h+2,h+3,…h+1,h+2,h+3,\ldots h+1,h+2,h+3,… h+1,h+2,h+3,h+1,h+2,h+3,h+1,h+2,h+3, 这些整数对应的位置。

    • 再哈希法:当发现哈希冲突后,使用另一个哈希函数产生一个新的地址。

  • 扩容:当哈希表元素过多时,冲突的概率将越来越大,而在哈希表中查询一个元素的效率也会越来越低。因此,需要开辟一块更大的空间,来缓解哈希表中发生的冲突。
    以上内容读者可以自行翻阅数据结构的教材,本题解不再阐述,而是直接给出一个最简单的哈希表实现。
    方法一:链地址法
    设哈希表的大小为 base \textit{base} base,则可以设计一个简单的哈希函数: h a s h ( x ) = x    mod     b a s e hash(x) =x \,  \text{mod}\,  base hash(x)=xmodbase

我们开辟一个大小为 b a s e base base 的数组,数组的每个位置是一个链表。当计算出哈希值之后,就插入到对应位置的链表当中。

由于我们使用整数除法作为哈希函数,为了尽可能避免冲突,应当将 b a s e base base 取为一个质数。在这里,我们取 b a s e = 769 base=769 base=769

在这里插入图片描述

相关题目

705. 设计哈希集合

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

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

相关文章

干货 | 百亿节点,毫秒级延迟,基于nebula的大规模图应用实践

背景 2017年9月携程金融成立,在金融和风控业务中,有多种场景需要对图关系网络进行分析和实时查询,传统关系型数据库难以保证此类场景下的关联性能,且实现复杂性高,离线关联耗时过长,因此对图数据库的需求日…

TypeScript 忽略红色波浪线

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

【noVNC】使用noVNC实现浏览器网页访问vnc(基于web的远程桌面)

1.VNC本身提供的http连接方式,可传输文件,画面有卡顿,需要安装jre 2.noVNC访问方式,不可传输文件,画面较为流畅,不用安装插件运行环境 一、noVNC 是什么 Web 端的Vnc软件,通过noVNC&#xff0…

计算机体系架构

冯诺依曼架构 我们编写的程序存储在哪里呢?CPU内部的结构其实很简单,除了ALU、控制单元、寄存器和少量Cache,根本没有多余的空间存放我们编写的代码,我们需要额外的存储器来存放我们编写的程序(指令序列)。…

逆向案例十六——简单webpack逆向,财联社信息

网址链接:财联社A股24小时电报-上市公司动态-今日股市行情报道 数据包sign参数为加密,可以直接搜索找参数的位置,搜索不到的情况下,在断点跟栈: 确定js文件所在位置,并打上断点。 点击加载刷新页面。可以发…

阿里云部署LAMP环境搭建门户网站

目录 数据库配置 1、在账号管理页面,单击创建账号,输入数据库账号名称选择普通账号,输入密码后确认创建 2、在创建数据库面板中,创建数据库,输入数据库名称,选择上一步创建的账号,选择要授予账…

第6章 6.4.1 案例一:爬取亚洲各地区的实时时间(MATLAB入门课程)

讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 本案例将引导大家爬取亚洲各地区的实时时间。我们将从下面这个网…

【攻防世界】supersqli(堆叠注入)

进入题目环境,有输入框与注入参数,推测类型为SQL注入: 测试--注入类型为数字型还是字符型,构造payload:?inject1 or 12 并提交: 发现页面依然正常,说明注入类型为字符型,则继续检查…

matplotlib_vs_ggplot2

参考博客 https://markusdumke.github.io/articles/2017/11/make-matplotlib-look-like-ggplot/#exactline theme_bw.mplstyle # ggplot style with white background # adapted from http://www.huyng.com/posts/sane-color-scheme-for-matplotlib/patch.linewidth: 1 patch…

Vitis HLS 学习笔记--ap_int.h / ap_fixed.h(1)

目录 目录 1. 概述 2. 简要规则 3. 浮点运算的复杂性 2.1 对阶 3.2 尾数运算 3.3 规格化和舍入 3.4 特殊值的处理 4. 示例(ap_fixed.h) 5. 量化模式(ap_fixed.h) 5.1 AP_SAT* 模式会增加资源用量 1. 概述 ap_int.h 和…

CTFshow电子取证——内存取证2

接上回 JiaJia-CP-2 2.佳佳在网页上登录了自己的邮箱,请问佳佳的邮箱是? 因为是在网页上登陆的邮箱 用iehistory插件 查看一下网页历史记录 为了方便分析,使用grep命令正则匹配一下 **com 的记录 vol.py -f JiaJia_Co.raw --profileWin…

【ELK】ELK企业级日志分析系统

搜集日志;日志处理器;索引平台;提供视图化界面;客户端登录 日志收集者:负责监控微服务的日志,并记录 日志存储者:接收日志,写入 日志harbor:负责去连接多个日志收集者&am…

找到冠军 II(Lc2924)——统计入度

一场比赛中共有 n 支队伍,按从 0 到 n - 1 编号。每支队伍也是 有向无环图(DAG) 上的一个节点。 给你一个整数 n 和一个下标从 0 开始、长度为 m 的二维整数数组 edges 表示这个有向无环图,其中 edges[i] [ui, vi] 表示图中存在…

在Linux驱动中,如何确保中断上下文的正确保存和恢复?

大家好,今天给大家介绍在Linux驱动中,如何确保中断上下文的正确保存和恢复?,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 在Linux驱动中&am…

基于生成对抗网络在服装领域的发展脉络和应用趋势

文章目录 1、概述2、深度学习图像生成模型2.1、深度信念网络(Deep belief network,DBN)2.2、变分自编码器(Variational auto-encoder,VAE)2.3、生成对抗网络(Generative adversarial networks,GAN) 3、 模型对比分析4、基于多模态转换的服装图…

人工智能科普:人工智能的分类

人工智能的分类多种多样,根据不同的标准和应用场景,可以将其划分为多个不同的类别。以下是对人工智能分类的详细探讨。 一、按应用领域分类 1. 智能机器人:智能机器人是人工智能技术在机器人领域的应用。它们能够根据环境和任务的不同进行自…

arm工作模式、arm9通用寄存器、异常向量表中irq的异常向量、cpsr中的哪几位是用来设置工作模式以及r13,r14,15别名是什么?有什么作用?

ARM 首先先介绍一下ARM公司。 ARM成立于1990年11月,前身为Acorn计算机公司 主要设计ARM系列RISC处理器内核 授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片 提供基于ARM架构的开发设计技术软件工具评估版调试工具应用软件总线架构外围设备单元等等CPU中…

ENSP防火墙配置策略路由及ip-link探测

拓扑 配置目标 1.A区域走ISP1,B区域走ISP2 2. isp线路故障时及时切换到另一条线路 配置接口及安全区域 配置安全策略 配置nat 配置默认路由 配置ip-link 配置策略路由 cl-1 cl-2 验证配置成功 策略路由 A走ISP1 B走ISP2 验证线路故障 isp1 in g0/0/0 shoutdow…

WPS二次开发系列:快速了解WPS SDK功能

作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(WPS二次开发QQ群:250325397),摸鱼吹牛嗨起来&#xff01…

基于FPGA的以太网相关文章导航

首先需要了解以太网的一些接口协议标准,常见的MII、GMII、RGMII时序,便于后续开发。 【必读】从MII到RGMII,一文了解以太网PHY芯片不同传输接口信号时序! 介绍一款比较老的以太网PHY芯片88E1518,具有RGMII接口&#xf…