定义:
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。(百度百科)
散列中最重要的两部分:
确定散列函数,以及解决冲突问题
解决冲突问题:当一个元素要插入时,此前已有插入的元素散列。那么就会产生一个冲突,这个冲突必须要消除。解决冲突的办法有两种:
1 分离链接法:将散列到同一个值的全部元素保留到一个链表中
2 开放定址法(包含线性探測,平方探測,双散列等)