什么是哈希,哈希表,哈希函数,哈希碰撞?

news/2024/12/29 0:42:42/

什么是哈希?

比方我有个原始值,S=[“老铁双击666”,‘感谢老铁送的飞机’],
通过某种算法(比如java的hasecode(获得变量的物理地址))得到的666这个就是“哈希码“(将字符串转换成尽可能不重复的int类型数字),
然后通过“哈希算法“(如取余法等)获得的值比如1, 这个1就是“哈希值“,存储“1对应老铁双击666“这些关系的就是哈希表。

说明一下:上面的取余运算是666%N,N在下图的意思中是3,正常是count(S)/5,太长会产生很多空项,太短很多值会很长变成链式搜索

什么是哈希冲突?

1.拉链法:

在这里插入图片描述
上图为什么1位置后面有两个数据呢?因为其他值经过哈希运算后拿到的哈希值也可能是1,这就是哈希冲突(哈希碰撞),解决方法有很多,链地址法适用于经常进行插入和删除的情况。

2.开放地址法:

开放地址法又分线性探测法和双重哈西法

线性探测法
(图为线性探测法)

线性探测法

假设元素29哈希运算后还是29
插入元素29:元素29的哈希值为29,29%14=1,但1号元素已经有数值15了,然后检查下一个元素(2号元素),但2号元素已经有数值30了,然后检查下一个元素(3号元素),3号元素为空,插入到3号元素
搜索元素29:元素29的哈希值为29,29%14=1,检查1号元素,15!=29;然后检查下一个元素(2号元素),30!=29;然后检查下一个元素(3号元素),29=29,返回数值,查找完毕。

双重哈西法

又称再哈西法,再原来哈西函数的基础上再准备一个哈西函数2,如地址冲突,运行函数2,如又冲突,则函数2得到的值加一,再加二直到不在冲突。

总结

hash table哈希表是基于数组的一种存储方式,其存储上就是用于存储键值对(<key,value>)的集合(数组)。当要存储一个数据的时候,首先用一个函数计算 数据的地址,然后再将数据存进指定地址位置的数组里面。这个函数就是哈希函数,而这个数组就是哈希表,哈希的主要应用是哈希表和分布式缓存


注:自己的理解归纳,有错误敬请留言指正。

http://www.ppmy.cn/news/343596.html

相关文章

《哈希表》

【一】哈希概念 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过关键码的多次比较&#xff0c;顺序查找时间的复杂度为O(N),平衡树中为树的高度&#xff0c;即O(log2N),搜索的效率取决于搜…

Haar小波变换

1.哈尔基函数 最简单的基函数是哈尔基函数(Haar basis function)。哈尔基函数在1909年提出&#xff0c;它是由一组分段常值函数组成的函数集。这个函数集定义在半开区间[0,1)上&#xff0c;每一个分段常值函数的数值在一个小范围里是1&#xff0c;其他地方为0&#xff0…

雷达信号波形(一)

1. 功率信号和能量信号及它们的时域和频域性质 确知信号的分类。根据不同的分类标准可以分为周期信号和非周期信号&#xff0c;连续信号和离散信号&#xff0c;能量信号和功率信号等等。这里需要掌握的是信号的能量表达式&#xff0c;功率信号和能量信号的定义以及重点掌握它们…

雷达篇(三)FMCW雷达框图及原理介绍

目录 1 FMCW雷达基本框架 2 FMCW原理介绍 1 FMCW雷达基本框架 调频连续波雷达的基本框图如图 1所示&#xff0c;框架中主要包括上位机显示与控制界面、信号处理机、收发支路以及天线四个部分。 1) 上位机显示与控制界面主要功能&#xff1a; a) 显示…

哈希冲突-哈希碰撞

当我们对某个元素进行哈希运算&#xff0c;得到一个存储地址&#xff0c;然后要进行插入的时候&#xff0c;发现已经被其他元素占用了&#xff0c;其实这就是所谓的哈希冲突&#xff0c;也叫哈希碰撞。 哈希函数的设计至关重要&#xff0c;好的哈希函数会尽可能地保证 计算简单…

哈希碰撞

一、什么是哈希碰撞 所谓哈希&#xff08;hash&#xff09;&#xff0c;就是将不同的输入映射成独一无二的、固定长度的值&#xff08;又称"哈希值"&#xff09;。它是最常见的软件运算之一。如果不同的输入得到了同一个哈希值&#xff0c;就发生了"哈希碰撞&q…

分析数据之雷达图

结果图&#xff1a; 步骤分析如图&#xff1a; 极轴就是极坐标系的开始位置&#xff0c;代码中的angles就是极轴转出来的角度 1、明确有几个特征&#xff0c;将圆平均切分 2、每个特征的数据 3、绘图 代码&#xff1a; import matplotlib.pyplot as plt import numpy as n…

R实战| 雷达图(Radar Chart)

R实战| 雷达图(Radar Chart) 雷达图(radar chart)&#xff0c;又称蜘蛛网图(spider plot)&#xff0c;是一种表现多维数据的强弱的图表。它将多个维度的数据量映射到坐标轴上&#xff0c;这些坐标轴起始于同一个圆心点&#xff0c;通常结束于圆周边缘&#xff0c;将同一组的点使…