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