多语言展示
当前在线:1814今日阅读:27今日分享:41

解决数据结构中处理冲突的方法

使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数, 也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照关键字为每一个元素'分类',然后将这个元素存储在相应'类'所对应的地方。
方法/步骤
1

但是,不能够保证每个元素的关键字与函数值是一一对应的,因此极有可能出现对于不同的元素,却计算出了相同的函数值

2

这样就产生了'冲突',换句话说,就是把不同的元素分在了相同的'类'之中。后面我们将看到一种解决'冲突'的简便做法。

3

总的来说,'直接定址'与'解决冲突'是哈希表的两大特点。

4

函数构造构造函数的常用方法(下面为了叙述简洁,设 h(k) 表示关键字为 k 的元素所对应的函数值):a) 除余法:选择一个适当的正整数 p ,令 h(k ) = k mod p

5

这里, p 如果选取的是比较大的素数,效果比较好。而且此法非常容易实现,因此是最常用的方法。b) 数字选择法:

6

如果关键字的位数比较多,超过长整型范围而无法直接运算,可以选择其中数字分布比较均匀的若干位,所组成的新的值作为关键字或者直接作为函数值。

推荐信息