当前位置:新励学网 > 秒知问答 > 哈希值,具体是什么意思

哈希值,具体是什么意思

发表时间:2024-08-23 10:37:15 来源:网友投稿

一步一步来。

r 首先我们要知道哈希是什么?r 哈希(Hash)一般叫做散列,意思就是把一堆任意长度的字符串、数字或者二进制输入通过一定的算法(非常多的哈希算法)生成固定长度的一个数字(字符串)。因为算法原因,不同的输入就会得到不同的哈希值。其次我们要知道哈希表是什么?r 哈希表(Hash Table)一般叫做散列表,就是通过把键值计算出Hash值后,通过Hash值映射到表里面的某个位置。那么同样的键值,下次访问或者修改都是同一个映射位置,不同的键值因为计算出Hash值不一样映射的位置也会不同。然后什么是哈希冲突(哈希碰撞)?r 因为哈希值是通过一定算法生成的,那么就有一定的可能出现不同的输入得到的Hash值是一样的,就算我们可以通过调整算法尽量减少这种情况,但是也不可完全避免。发生这种情况后,我们就会出现两个不同的键值被映射到同一个位置了,这就是哈希冲突。怎么解决?r 开放定址1、线性探测r 出现Hash冲突后,依次查询这个键值后面的地址,找到一个空的或者全部查完没找到。r 2、二次探测r 出现冲突后,对这个键值后面的地址或者前面的地址进行平方后查询。r 再哈希构建多个Hash算法函数,出现冲突就用其他Hash算法进行Hash,直到不冲突为止。r 链表法也叫开链,C++的map就是使用这种方法,就是对每个位置新增一个链表,添加元素到链表中,只要链表元素不多,效率都还行。r

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!