哈希算法简介 哈希算法简介 目录 1 哈希算法概念 ............................................................................................................................................. 2 2 哈希函数 ..................................................................................................................................................... 3 3 冲突的解决方法 ......................................................................................................................................... 3 4 哈希算法应用 ............................................................................................................................................. 4 哈希算法简介 第 1 页 共 7 页 关键词: 算法、哈希、c语言 摘 要: 哈希算法在软件开发和Lin u x 内核中多次被使用,由此可以见哈希算法的实用性和重要性。本文介绍了哈希算法的原理和应用,并给出了简略的代码实现,以便读者理解。 哈希算法简介 第 2 页 共 7 页 1 哈希算法概念 哈希(hash 散列,音译为哈希)算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。 哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希算法都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。 哈希表是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的项作为记录在表中的存储位置,这种表称为哈希表,所得存储位置称为哈希地址。作为线性数据结构与表格和队列等相比,哈希表无疑是查找速度比较快的一种。 查找一般是对项的摸个部分(及数据成员)进行,这部分称为键(key)。例如,项可以由字符串作为键,附带一些数据成员。 理想的哈希表数据结构只不过是一个包含一些项的具有固定大小的数组。 通常的习惯是让项从0 到 TableSize-1 之间变化。 将每个键映射到0 到 TableSize-1 这个范围中的某个数 ,并且将其放到适当的单元中,这个映射就称为散列函数(hash funciton)。 如右图,john 被散列到3, phil 被散列到4, dave 被散列到6,mary 被散列到7....