在前面我们已经学到很多在一个结构中查找一个元素,不同的结构的方法不同且实现时的时间复杂度与空间复杂度都有不同,但是但部分的查找都是经过比较,从而找出自己要查找的主要元素。由此我们就想,有没有一种方法不通过比较,从而快速的找到需要的数据,因此,在这里我们就提出了哈希查找,利用存储位置并按照此位置进行存放元素,从而极大的实现了我们的查找效率。下面我们将对哈希查找展开来讲。
目前我们了解到的查找主要有以下几种:
一、基本概念
1、哈希方法的提出
由于在查找与搜索的过程中,如果数据量十分的庞大,要搜索一个数据,将变得十分困难,在数据结构中搜索一个元素需要进行一系列的关键码比较。搜索的效率取决于搜索过程中比较的次数。因此要解决这个问题,将变得十分重要,因此,找到一个有效的方法变得十分重要,因此哈希查找的提出,极大的情况下是为了解决在搜索中的数据量较大的问题。
2、基本概念
构造一种存储结构,使元素的存储位置与它的关键码之间建立一个确定的对应函数关系:Hash(),那么每个元素关键码与结构中的一个唯一的存储位置相对应:Address = Hash(Key),此处的Hash函数,将产生在哈希表中的唯一一个位置,利用这个位置从而存储数据,将极大的提高数据的存储与查找的效率。
- 在插入时,根据待插入元素的关键码,以此函数计算出该元素的存储位置并按此位置进行存放。
- 在搜索时,对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功。该方式即散列方法(Hash Method),在散列方 法中使用的转换函数叫着散列函数(Hashfunction),构造出来的结构叫散列表(Hash Table)。
3、哈希的基本思想—–>哈希表类似于数组
以关键字K为自变量,通过一个确定的函数f,计算出对应的函数值f (k),把这个值解释为关键字等于K的结点的存储地址。查找时,再根据要查找的关键字用同样的函数计算地址,然后到相应的存储单元取出要查找的结点。按这个思想建立的表,称为哈希表,称函数f 为哈希函数,称f (k)的值为哈希地址。
4、