HASH基础知识整理一

hash table,哈希也叫表散列表,基于快速存取的思想。
“空间换时间”:该数据结构可以看作一个线性表,但映射的数据不一定占满所有的空间。
根据关键码(Key value)而直接进行访问的数据结构,便于查找
那种映射关系就是哈希函数,H(key)
解决冲突方法:1,H=(H(key)+di)MODm,i=1,2,...k(i<m),冲突后再次散列,如,线性探测再散列,二次探测散列,伪随机探测再散列
2,Hi=RHi(key)再哈希法,使用多个哈希函数,当出现冲突时使用其他的hash函数
3,链地址法,将关键词相同的记录存储在一个链表,也就是,数据映射的不单单是一个线性表,线性表中每个元素用一个链表表示
4,建立一个公共溢出区,HashTable[0...m-1]为基本表,另设立一个向量OverTable[0..v]为溢出表,所有关键字和基本表中关键字冲突的,不管hash结果是什么,一旦发生冲突,都踏入溢出表
哈系表存储结构
int hashsize[]={997....}//哈希表容量递增表,一个合适的素数序列
typedef struct{
	ElemType *elem;//动态分配数组
	int count;
	int sizeindex;//当前容量
}HashTable;
冲突因素
1,哈希函数
2,装填因子,a=(表中填入的记录数)/(哈系表的长度),a越小冲突越

你可能感兴趣的:(HASH基础知识整理一)