news 2026/6/23 23:14:42

哈希表与哈希算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
哈希表与哈希算法

哈希表又称散列表,它通过建立键 key 与值 value 之间的映射,实现高效的元素查询。具体而言,我们向哈希表中输入一个键 key ,则可以在 O1 时间内获取对应的值 value 。除哈希表外,数组和链表也可以实现查询功能,但效率都没有哈希表效率高。
我们可以用一个数组来简单实现哈希表,我们将数组中每个空位称为桶,每个桶可存储一个键值对。查询操作就是找到对应key的桶,并在桶中获取value。如何通过key获取对应的桶呢,这是通过哈希函数实现的,哈希函数计算过程分两步,第一步通过哈希算法计算得到哈希值,然后将哈希值对桶数量取模,从而获得该桶的数组索引。index = hash(key) % capacity,通过得到的index在哈希表中访问对应的桶,从而获得value。理论上存在多个输入对应同一个输出,这就是哈希冲突,我们可以通过扩容进行解决,但扩容需要将所有键值对从原哈希表迁移至新的哈希表非常耗时,所以要预留足够的容量,防止频繁扩容。扩容这种方式简单但效率低,我们可以采用改良哈希表结构,采用拉链法,将单一桶转换成一个链表,链表很长的时候查询效率很差,所以达到一定长度就转成树的结构提高效率。
在哈希表中,我们希望哈希算法具有确定性、高效率和均匀分布的特点。常见的哈希算法包括 MD5、SHA-1、SHA-2 和 SHA-3 等。MD5 常用于校验文件完整性,SHA-2 常用于安全应用与协议。
哈希表的底层实现是数组,链表,与二叉树,但为什么效率比他们高呢?那是因为它的空间效率变低了,相当于有一部分空间未使用,而且如果一个功能在相同的时间复杂度下使用数组或者链表实现,那么通常比哈希表更快,因为哈希函数计算需要时间。如果key是小范围的整数,一般直接采用数组。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 23:36:49

二叉树以及二叉搜索树

二叉树是一种非线性数据结构,二叉树的基本单元是节点,每个节点包含值、左子节点引用和右子节点引用。在二叉树中,除叶节点外,其他所有节点都包含子节点和非空子树。二叉树的常见术语包括一下几个: 根节点:位…

作者头像 李华
网站建设 2026/6/23 21:13:24

halcon常用图像拼接

一般流程(halcon中也提到过更高阶的金字塔图像拼接) points_harris (Image1, 0.7, 2, 0.08, 1000, Row1, Column1) points_harris (Image2, 0.7, 2, 0.08, 1000, Row2, Column2) proj_match_points_ransac (Image1, Image2,Row1, Column1,Row2, Column2, ncc, 10, 0, 0, max…

作者头像 李华
网站建设 2026/6/19 10:32:31

全国矿场地图更新20251225

​ 格式为SHP格式:(重发)Shapefile (SHP)简介 我们发布矢量的数据如未特殊声明全部为SHP!坐标系为WGS84:WGS84(World Geodetic System 1984)坐标系简介​注意是矿场,不是矿资源分布地图!包括各类矿场&#…

作者头像 李华
网站建设 2026/6/23 19:01:11

用 Sentinel-1 Sentinel-2 结合监测 矿场采掘情况

刚刚制作了全国矿场地图更新20251225后,我想试试可不可以用Sentinel-1 (SAR)和 Sentinel-2 (光学) 监测一下矿场的采掘进度!我利用地图资源下载工具(geodatatool),下载了Sentinel-1 (SAR)和 Sentinel-2 (光学) 数据&am…

作者头像 李华
网站建设 2026/6/23 8:07:47

数说故事联合复旦发布研究报告:中国母婴产品消费群体洞察

社交媒体已经成为新生代父母“取经”的重要场域。当90后、95后新生代爸妈成为育儿主力军,不再是“长辈经验代代传”,选购水解奶粉前,会先深挖小红书的真实测评笔记、刷看抖音的专业母婴科普视频、蹲守头部育儿博主的直播答疑专场。从成分党视…

作者头像 李华
网站建设 2026/6/23 15:23:49

【应用vue3和vant组件开发前端页面框架】

应用vue3和vant组件开发前端页面框架 生成效果代码 <template><view class"page"><van-nav-bartitle"页面标题"left-arrowfixedclick-left"onClickLeft"/><van-tabbar v-model"active"><van-tabbar-item i…

作者头像 李华