哈希表理论基础
哈希表(Hash Table)
根据关键码的值进行访问的数据结构
通俗来说数组就是一张哈希表
哈希表中关键码就是数组的索引下标,通过下标直接访问数组中的元素
哈希表一般用于快速判断一个元素是否出现在集合中
eg:查询一个名字是否在这所学校中
使用枚举的时间复杂度是O(n)
使用哈希表的时间复杂度O(1)
哈希函数
哈希函数是一种将任意长度的数据映射为固定长度值的函数。它接收输入数据,经过计算后生成一个称为哈希值或摘要的输出。
哈希函数具有以下特点:
- 固定长度输出:无论输入数据的长度如何,哈希函数都会产生固定长度的哈希值。常见的哈希算法如MD5和SHA-256产生的哈希值长度分别为128位和256位。
- 独特性:对于不同的输入数据,哈希函数应该生成不同的哈希值。这意味着即使输入数据的细微变化,输出的哈希值也会有较大的差异。
- 不可逆性:从哈希值无法反推出原始输入数据。即使输入数据发生细微变化,也会导致生成完全不同的哈希值。
高效性:哈希函数的计算应该是高效的,即使对于大量的输入数据也能够快速生成哈希值。
哈希碰撞
哈希碰撞是指在哈希函数中存在两个不同的输入数据,但它们却生成了相同的哈希值。换句话说,哈希碰撞是指两个不同的输入数据经过哈希函数计算后得到了相同的摘要。