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