已知散列表长度为13,散列函数为H(key)=key % 11,处理冲突的方法为线性探测法,请画出依次插入关键字(10,8,40,27,21,57,46,23,19,56)以后的散列表,并计算查找成功和不成功时的平均查找长度。
解:散列表是哈希表的另一种叫法,散列函数为H(key)=key % 11用的是除留余数法,线性探测法就是当遇到冲突时,H(key)=(key+d )% 11,key为关键字,若还是遇到冲突,D(i)=(H(key)+(i) )% 11,依次往下去,直到地址不冲突,若一直没找到,查找失败。可取d=1.
10%11=10 将10放A[10];
8%11=8 将8放A[8];
40%11=7 将40放A[7];
27%11=5 将27放A[5];
21%11=10 因为A[10]已被占用,遇到冲突,使用线性探测法,D(1)=(10+1 )% 11=0,A[0]没被占用,将21放A[0];
57%11=2 将57放A[2];
46%11=2 因为A[2]已被占用,遇到冲突,使用线性探测法,D(1)=(2+1 )% 11=3,A[3]没被占用,将46放A[3];
23%11=1 将23放A[1];
19%11=8 因为A[8]已被占用,遇到冲突,使用线性探测法,D(1)=(8+1 )% 11=9,A[9]没被占用,将19放A[9];