- 《数据结构与算法》专栏完整版在公众号【书伟认视界】中查看,转载需联系微信【econe0219】
散列表
散列表(Hash Table),也可直译为哈希表。散列表是基于数组扩展得到的一种新的数据结构,因此有延续了数组最重要的一条性质:支持按下标随机访问,时间复杂度是O(1)。
通过散列函数把元素的键值映射为下标,然后将数据存储在数组中对应下标的位置。我们熟悉的python的字典就是由散列表实现的。
散列函数:
直观定义为hash(key),key表示元素的键值,hash(key)指的就是经过散列函数得到的散列值。
用python的字典大概举个例子:
定义一个变量 student = {‘name’: ‘张三’, ‘age’: 20}
hash(‘name’)得到散列值0,即第一个位置,对应元素是’张三’;hash(‘age’)得到散列值1,对应元素是20。
因为散列表中的元素不可重复,所以散列函数的设计需要有以下三个要求:
- 散列函数计算得到的散列值是一个非负整数(数组下标从0开始);
- 如果key1≠key2,则hash(key1)≠hash(key2);
- 如果key1=key2,则hash(key1)=hash(key2);