执沐 2024-09-23 17:01:16
存储效率是指哈希表中实际存储的元素个数与哈希表长度的比值 散列函数是指将关键字映射到哈希地址的函数 装填因子是指哈希表中已填入的元素个数与哈希表长度的比值。
...全文
143 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
哈希 一、实验目的 学会哈希函数的构造方法,处理冲突的机制以及哈希的查找。 二、实验内容 说明以下概念 1、哈希函数 在一般情况下,需在关键字与记录在表存储位置之间建立一个函数关系,以 f(key) 作为关键字为 key 的记录在表的位置,通常称这个函数 f(key) 为哈希函数。 1) 哈希函数是一个映象,即: 将关键字的集合映射到某个地址集合上, 它的设置很灵活,只要这个地址集合的大小不超出允许范围即可; 2) 由于哈希函数是一个压缩映象,因此,在一般情况下,很容易产生"冲突"现象,即: key1( key2,而 f(key1) = f(key2)。 2、哈希 根据设定的哈希函数f(key)和处理冲突的方法将一组关键字映像到一个有限的连续的地 址集(区间)上,并以关键字地址的"像"作为记录在表存储位置,这种表便 称为哈希,这一映像过程称为哈希造表或散列,所得存储位置称哈希地址或散列地址 。 3、冲突及处理 1)冲突:对不同的关键字可能得到同意哈希地址,即key1( key2,而 f(key1) = f(key2),这种现象称冲突(collision)。 2)处理方法:开放地址法。 4、哈希的查找分析 从查找过程得知,哈希查找的平均查找长度实际上并不等于零。 决定哈希查找的ASL的因素: 1) 选用的哈希函数; 2) 选用的处理冲突的方法; 3) 哈希饱和的程度,装载因子 α=n/m 值的大小(n—记录数,m—表的长度) 一般情况下,可以认为选用的哈希函数是"均匀"的,则在讨论ASL时,可以不考虑它的因 素。因此,哈希的ASL是处理冲突方法和装载因子函数。 可以证明: 查找成功时有下列结果: 线性探测再散列 随机探测再散列 从以上结果可见 哈希的平均查找长度是(的函数,而不是n的函数。这说明,用哈希构造查找表时, 可以选择一个适当的装填因子(,使得平均查找长度限定在某个范围内。 5、哈希函数C语言代码 /*计算哈希地址,插入哈希*/ int InsertHash(HashTable *H,int e,int d[]){ int k,i=1; k=e%P; while(H->data[k].flag==TRUE""k<0){ k=(e%P+d[i])%MAXSIZE;i++; if(i>=15) return ERROR; } H->data[k].key=e; H->data[k].flag=TRUE; H->count++; return OK; } /*构造哈希*/ int CreateHash(HashTable *H,int ds[],int len,int d[]){ int i; for(i=0;icount>=MAXSIZE) return ERROR; } return OK; } /*初始化哈希*/ void InitHash(HashTable *H){ int i; for(i=0;idata[i].key=0; H->data[i].flag=FALSE; } } /*在哈希查找*/ int SearchHash(HashTable *H, int e,int d[]){ int k,i=1; k=e%P; while(H->data[k].key!=e){ k=(e%P+d[i])%MAXSIZE;i++; if(i>=15) return -1; } return k; } 运行结果: ----------------------- 实验5----哈希实验报告全文共4页,当前为第1页。 实验5----哈希实验报告全文共4页,当前为第2页。 实验5----哈希实验报告全文共4页,当前为第3页。 实验5----哈希实验报告全文共4页,当前为第4页。

829

社区成员

发帖
与我相关
我的任务
社区描述
你的一生其实就是在进行寻找哪些人可以来出席你的葬礼的一场面试。
考研前端python 个人社区 吉林省·长春市
社区管理员
  • 码银
  • 会洗碗的CV工程师
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧