数据结构学习之:哈希表
一、哈希表概述
哈希表又称为散列表,哈希表是一种重要的数据结构,像java中的HashMap,HashSet、HashTable等等都是基于哈希表创建的集合类容器。像这些容器它的优势就是查找效率高,因此我们知道,哈希表其实是为了提高数据查找效率的一种数据结构。如下图所示,其实哈希表就是通过散列函数创建的一种对应关系表,在存储数据时,我们按照散列函数计算出数据存储的位置,然后将数据存储在起来,在查找数据时,通过散列函数计算出数据存储的位置的下标,找到对应的值。
二、散列函数的设计
散列函数的设计需要遵守两个原则:
1、计算简单
2、分布均匀
常用的散列函数设计有:直接定址法,数据分析法、平放取中法、取余法、随机数法。
1、直接定址法
直接定址法,暴力简单,就是取关键字或关键字的某个线性函数值为散列地址,像下图的散列函数设计就是直接定址。
2、数据分析法
数据分析法需要提前对数据有了解和统计,所以这种设计方法很有局限性,这里就不做过多的介绍了。
3、平方取中法
对数据作