码迷,mamicode.com
首页 > 其他好文 > 详细

解决哈希(Hash)冲突的主要方法

时间:2015-08-25 16:36:39      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:hash   哈希   

一)哈希表简介

非哈希表的特点:关键字在表中的位置和它之间不存在一个确定的关系,查找的过程为给定值一次和各个关键字进行比较,查找的效率取决于和给定值进行比较的次数。

    哈希表的特点:关键字在表中位置和它之间存在一种确定的关系。

哈希函数:一般情况下,需要在关键字与它在表中的存储位置之间建立一个函数关系,以f(key)作为关键字为key的记录在表中的位置,通常称这个函数f(key)为哈希函数。

hash : 翻译为“散列”,就是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值。

           这种转换是一种压缩映射散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。

           简单的说就是一种将任意长度的消息压缩到莫伊固定长度的消息摘要的函数。

二)哈希函数处理冲突的方法

1)开放定址法:

技术分享

其中 m 为表的长度

对增量di有三种取法:

线性探测再散列   di = 1 , 2 , 3 , ... , m-1

平方探测再散列   di = 1 2 , -12 , 22 , -22 , 32 , -32 , ... , k2 ,  -k2

随机探测再散列   di 是一组伪随机数列

例子:技术分享

2)链地址法

技术分享

3、4)再哈希、建立公共溢出区

技术分享







版权声明:本文为博主原创文章,未经博主允许不得转载。

解决哈希(Hash)冲突的主要方法

标签:hash   哈希   

原文地址:http://blog.csdn.net/afterlife_qiye/article/details/47976917

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!