《算法导论》 第11章部分答案

本文深入探讨了散列表的设计与实现,包括不同散列函数的选择及其对性能的影响,并通过具体例子展示了线性探查、二次探查及双重散列等解决冲突的方法。此外,还分析了散列表在不同负载因子下的查找效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:以下答案均为自己思考,难免有误,欢迎指正。


11.3-1: 将长度为n的链表进行排序,将关键值的散列值相同的元素排为相邻。而散列表有点类似于链接法解决冲突的散列表。


11.3-2: 一个字符的ASCII码占七位,而128=2^7。所以每次只需计算一位字符(在结果之中互不交叉),而且至多只需要计算后面5位。


11.3-3:(两个字符串有相同的字符和位数,只是排列不同而已)        

                假设字符串有r位,则散列值为:

               

                 又因为字符串有相同的字符,取余前面的求和都相等,所以散列值相等。


11.3-4:  分别为700、318、936、554、172


11.3-5:  对于散列表中每个槽中分配的元素均匀,则碰撞概率的最大值会最小(否则最大值会出现在链表长度最长的槽中)。

                         假设|U|=n ,|B|=m 。则任意两个元素发生碰撞的概率:

                             

                      故假设得证。



11.4-1:   线性探查:    22、88、 0、  0、  4、15、28、17、59、31、10

                       二次探查:    22、  0、88、17、 4、  0、28、59、15、31、10

             双重散列:     22、  0、59、17、 4、15、28、88、  0、31、10



11.4-2: HASH-DELETE(T,x)

                                T[x.key] = DELETED

              -----------------------------------------

               HASH-INSERT(T,k)

                    for i=0 to m     //m is the number of elements in the table

                          j = h(k,i)

                          if  T[j]==NIL  or  T[j]==DELETED

                                 T[j] = K

                                  return j

                    error "hash table overflow!"



11.4-3:   根据前面公式有

                             

 成功查找    -  1/α*ln(1-α)不成功查找    1/(1-α)
α = 3/41.8484
α =7/82.3778



11.4-5:   根据上面公式,用MATLAB解出来约为:0.7135


  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值