查找->动态查找表->哈希表(未完)

文字描述

哈希表定义

  在前面讨论的各种查找算法中,都是建立在“比较”的基础上。记录的关键字和记录在结构中的相对位置不存在确定的关系,查找的效率依赖于查找过程中所进行的比较次数。而理想的情况是希望不经过任何比较,一次存取便能得到所查记录,那就必须在记录的存储位置和关键字之间建立一个确定的对应关系f。查找时,只要根据这个对应关系f找到给定值K的像f(K)。若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上,由此,不需要进行比较就可以直接取得所查记录。在此,这个对应关系f被称为哈希函数。按这个思想建立的表为哈希表。

  (1)哈希函数是一个映像,因此哈希函数的设定很灵活,只要使得任何关键字由此所得的哈希函数值都落在表长允许范围之内即可。

  (2)对不同的关键字可能得到同一哈希地址,即key1不等于key2,而f(key1)=f(key2)。这种现象称为冲突。具有相同函数值的关键字对该哈希函数来说称为同义词。一般情况下,冲突只能尽可能地少,而不能完全避免。因此哈希函数是从关键字集合到地址集合的映像。

  综上,哈希表定义:根据设定的哈希函数H(key)和处理冲突的方法将一组关键字映像到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“像”作为记录在表中的存储位置,这种表便称为哈希表,这一映像过程称为哈希造表或散列,所得存储位置成为哈希地址或散列地址。

哈希函数

(1)直接定址法

(2)数字分析法

(3)平方取中法

(4)折叠法

(5)除留余数法

(6)随机数法

处理冲突

(1)开放定址法

(2)再哈希法

(3)链地址法

(4)建立一个公共溢出区

哈希表的查找及其分析

猜你喜欢

转载自www.cnblogs.com/aimmiao/p/9550175.html