什么是Hash?

2021-10-29  本文已影响0人  sampson0115

Hash:

简介

例子:

你很想学太极拳,听说学校有个叫张三丰的人打得特别好,于是你到学校学生处找人,
学生处的工作人员可能会拿出学生名单,一个一个的查找,最终告诉你,学校没这个人,
并说张三丰几百年前就已经在武当山作古了。
可如果你找对了人,比如在操场上找那些爱运动的同学,人家会告诉你,"哦,你找张三丰呀,
有有有,我带你去。于是他把你带到了体育馆内,并告诉你,那个教大家打太极的小伙子就是张三丰',
原来"张三丰.是因为他太极拳打得好而得到的外号。学生处的老师找张三丰,那就是顺序表查找,
依赖的是姓名关键字的比较。而通过爱好运动的同学询问时,没有遍历,没有比较
就凭他们"欲找太极'张三丰',必在体育馆当中"的经验,直接告诉你位置

HASH主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂乱的128位的编码,这些编码值叫做HASH值. 也可以说,通俗的说hash就是找到一种数据内容和数据存放地址之间的映射关系。

hash表

Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找

这个源于Hash表设计的特殊性,它采用了函数映射的思想记录的存储位置记录的关键字关联起来,从而能够很快速地进行查找

对不同的关键字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),这种现象称碰撞。具有相同函数值的关键字对该散列函数来说称做同义词。综上所述,根据散列函数H(key)和处理冲突的方法将一组关键字映射到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“象” 作为记录在表中的存储位置,这种表便称为散列表,这一映象过程称为散列造表散列,所得的存储位置称散列地址

上一篇下一篇

猜你喜欢

热点阅读