哈希表
哈希表,是根据关键码值而直接进行访问的数据结构。也就是说,它是通过把关键码值映射到表中一个位置来访问记录,加快查找的速度。
哈希最主要的两个特点:1、直接定址。2、解决冲突。
解决冲突的方式一般有:线性探测法和拉链法。
映射的函数叫做散列函数。
存放记录的数组叫做散列表。
记录的存储位置=hash(关键字)
这里的对应关系f称为散列函数。
通过散列技术将记录存储在一块连续的存储空间中,这块连续的存储空间成为散列表。
哈希表有多种不同的实现方法,最常用的一种方法:拉链法。
左边是一个数组,数组每个成员包括一个指针,指向一个链表的头。
hash是一种更加快捷的查找技术,它就是找到数据内容和数据存放位置的一种映射关系。
哈希冲突
一个优秀的散列函数需要:计算简单+分布均匀。
优点:
不论哈希表中有多少数据,查找,插入,删除,都只需要接近常量的时间。
如果可以提前预测数据量的大小,那么哈希表在速度和易用性方面无与伦比。
缺点:
它是基于数组的,数组创建后难于扩展,所以必须要清楚表中将要存储多少数据。
常用的散列方法:
1、除法散列。
2、平方散列。
3、斐波那契散列。