哈希表

哈希表,是根据关键码值而直接进行访问的数据结构。也就是说,它是通过把关键码值映射到表中一个位置来访问记录,加快查找的速度。

哈希最主要的两个特点:1、直接定址。2、解决冲突。

解决冲突的方式一般有:线性探测法和拉链法。

映射的函数叫做散列函数。

存放记录的数组叫做散列表。

记录的存储位置=hash(关键字)

这里的对应关系f称为散列函数。

通过散列技术将记录存储在一块连续的存储空间中,这块连续的存储空间成为散列表。

哈希表有多种不同的实现方法,最常用的一种方法:拉链法。

哈希表

左边是一个数组,数组每个成员包括一个指针,指向一个链表的头。

hash是一种更加快捷的查找技术,它就是找到数据内容和数据存放位置的一种映射关系。

哈希冲突

一个优秀的散列函数需要:计算简单+分布均匀。

优点:

不论哈希表中有多少数据,查找,插入,删除,都只需要接近常量的时间。

如果可以提前预测数据量的大小,那么哈希表在速度和易用性方面无与伦比。

缺点:

它是基于数组的,数组创建后难于扩展,所以必须要清楚表中将要存储多少数据。


常用的散列方法:

1、除法散列。

2、平方散列。

3、斐波那契散列。