ds集合与散列说课.ppt

  1. 1、本文档共128页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例 求散列表大小并设计散列函数 设有一个含200个表项的散列表,用二次探查法解决冲突,按关键码查询时找到一个新表项插入位置的平均探查次数不超过1.5,则散列表项应能够至少容纳多少个表项。再设计散列函数(设有哪些信誉好的足球投注网站不成功的平均有哪些信誉好的足球投注网站长度为 Un=1 / (1 -α), 其中 α为装填因子) 解答:设表中表项个数 n = 200,有哪些信誉好的足球投注网站不成功的平均有哪些信誉好的足球投注网站长度 Un=1 / (1 -α) ? 1.5 ? ? ? 1/3 ? n / m = 200 / m = ? ? 1/3 m ? 600 若想删除一个表项, 只能给它做一个删除标记deleted进行逻辑删除, 不能把它真正删去。 逻辑删除的副作用是:在执行多次删除后, 表面上看起来散列表很满, 实际上有许多位置没有利用。 template class Type void HashTabeType :: MakeEmpty ( ) { //置表中所有表项为空 for ( int i = 0; i TableSize; i++) ht[i].info = Empty; CurrentSize = 0; } template class Type const HashTable Type HashTableType :: operator = ( const HashTableType ht2 ) { //重载函数:从散列表 ht2 复制到当前散列表 if ( this != ht2 ) { delete [ ] ht; TableSize = ht2.TableSize; AllocateHt ( ); for ( int i = 0; i TableSize; i++ ) ht[i] = ht2.ht[i]; CurrentSize = ht2.CurrentSize; } return *this; } template class Type int HashTableType:: Insert ( const Type x ) { //将新表项 x 插入到当前的散列表中 if ( ( int i = Find (x) ) = 0 ) return 0; //不插入 else if ( i != -TableSize ht[-i].info != Active ) { //在-i 处插入x ht[-i].Element = x; ht[-i].info = Active; CurrentSize++; return 1; } else return 0; } template class Type int HashTable Type :: Remove ( const Type x ) { //在当前散列表中删除表项 x if ( ( int i = Find (x) ) = 0 ) { //找到,删除 ht[i].info = deleted; //做删除标记 CurrentSize--; return 1; } else return 0; } 线性探查方法容易产生“堆积”, 不同探查序列的关键码占据可用的空桶, 为寻找某一关键码需要经历不同的探查序列, 导致有哪些信誉好的足球投注网站时间增加。 算法分析 设散列表的装填因子为 ? = n / (s*m),其中 n 是表中已有的表项个数,s 是每个桶中最多可容纳表项个数,m 是表中的桶数。 可用 ? 表明散列表的装满程度。? 越大, 表中表项数越多, 表装得越满, 发生冲突可能性越大。 通过对线性探查法的分析可知, 为有哪些信誉好的足球投注网站一个关键码所需进行的探查次数的期望值 P 大约是 (2-?)/(2-2?)。虽然平均探查次数较小, 但在最坏情况下的探查次数会相当大。 (2) 二次探查法 (quadratic probing) 为改善“堆积”问题, 减少为完成有哪些信誉好的足球投注网站所需的平均探查次数, 可使用二次探查法。 通过某一个散列函数对表项的关键码 x 进行计算, 得到桶号, 它是一个非负整数。 H0 = hash(x) 二次探查法在表中寻找“下一个”空桶的公式

文档评论(0)

舞林宝贝 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档