您的位置:首页 > 博客中心 > 互联网 >

散列表查找的一个实例

时间:2022-04-24 09:51

这里解决冲突的方法是开放地址法:“开放地址指的是表中尚未被占用的地址,开放地址法就是当冲突发生时候,形成一个地址序列,沿着这个序列逐个进行探测,直到找到一个空的开放地址,将发生冲突的关键字存放到该地址中去,即Hi=(H(key)+di)%m,i=1,2,..k(k<=m),其中H(key)为散列函数,m为散列表长,di为增量序列。

例题:选取散列函数H(K)=(3K)%11,用开放地址处理冲突,d1=H(K);di=(di+(7K)%10+1)%11(i=2,3,..),试着在HT[0,..10]的散列地址空间对关键字{22,41,53,46,30,13,1,67}构造散列表,并求出在等概率下查找成功的平均长度,并设计构造散列表的完整算法程序。

测试数据:{22,41,53,46,30,13,1,67}

输出:i=0 22 i=1 13 i=2 41 i=3 1 i=4 30 i=5 53 i=6 46 i=10 67

cs=18   ASL=2.25

1算法思想:构造散列表是根据散列表函数核处理冲突的方法,将不同关键字的记录存储到不同的散列表地址的过程,所以主要操作是运用散列函数求出散列地址,如果冲突解决冲突,确保不同关键字的记录存储到不同的散列地址。

2.数据结构和散列函数及冲突解决方法选:取散列函数H(K)=(3K)%11,用开放地址处理冲突,d1=H(K);di=(di+(7K)%10+1)%11(i=2,3,..)

3.模块划分 (1)散列空间数组的初始化InitHash;(2)散列函数Hash  (3)插入函数InsertHash  (4)查找函数SearchHash  (5)主函数

 1 #include 
 2 #include 
 3 #define n 8
 4 #define  m 11
 5 void InitHash(int HT[])
 6 {
 7 /*对存储记录的散列表数组用整数0初始化*/
 8 int i;
 9 for(i=0;i

读书笔记= =

 

本类排行

今日推荐

热门手游