题目
已知关键字序列 ( 19 , 14 , 23 , 1 , 68 , 20 , 84 , 27 , 55 , 11 , 1 0 , 79 ),哈希函数[1]为 H ( key ) = key%13, 用线性探测法处理冲突。设表长16,试构造这组关键字的散列表,并计算查找成功时的平均查找长度[2]。
已知关键字序列 { 19 , 14 , 23 , 1 , 68 , 20 , 84 , 27 , 55 , 11 , 1 0 , 79 },哈希函数[1]为 H ( key ) = key%13, 用线性探测法处理冲突。设表长16,试构造这组关键字的散列表,并计算查找成功时的平均查找长度[2]。
题目解答
答案
根据给定的关键字序列 {19, 14, 23, 1, 68, 20, 84, 27, 55, 11, 10, 79} 和哈希函数 H(key) = key%13,使用线性探测法构造散列表。
首先,创建一个长度为16的散列表。初始状态[3]下,所有槽位都为空。
关键字 19:经过哈希函数计算得到 H(19) = 19%13 = 6,将关键字 19 放入槽位 6。
关键字 14:经过哈希函数计算得到 H(14) = 14%13 = 1,将关键字 14 放入槽位 1。
关键字 23:经过哈希函数计算得到 H(23) = 23%13 = 10,将关键字 23 放入槽位 10。
...以此类推,依次将关键字插入散列表中。
最终,散列表的状态如下:
索引: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
关键字:- 14 - - - - 19 - - 23 - - - - - -
计算查找成功时的平均查找长度:
对于关键字序列中的每个关键字,通过哈希函数计算索引,并逐个查找直到找到目标关键字。在本例中,平均查找长度为插入槽位的总数除以关键字的总数。
平均查找长度 = (1 + 1 + 1 + 1 + 1 + 2 + 1 + 1 + 1 + 1 + 1 + 1) / 12 = 12 / 12 = 1
因此,查找成功时的平均查找长度为 1。