查找和内部排序.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简单 选择 排序 示 例 1.4.2 处理冲突的方法(四种) 1.开放定址法 (再散列法 ) 基本思想:当关键字key的哈希地址p= H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突的哈希地址pi ,将相应元素存入其中。这种方法有一个通用的再散列函数形式:Hi=(H(key)+di)% m i=1,2,…,n 其中H(key)为哈希函数,m 为表长,di称为增量序列。增量序列的取值方式不同,相应的再散列方式也不同。主要有以下三种: l线性探测再散列, di=1,2,3,…,m-1,其特点是:冲突发生时,顺序查看表中下一单元,直到找出一个空单元或查遍全表。 l二次探测再散列,di=12,-12,22,-22,…,k2,-k2 ( k=m/2 ) ,其特点是:冲突发生时,在表的左右进行跳跃式探测,比较灵活。 l伪随机探测再散列, di=伪随机数序列。具体实现时,应建立一个伪随机数发生器,(如i=(i+p)% m),并给定一个随机数做起点。 关键码集为 {47,7,29,11,16,92,22,8,3},哈希表表长为11, Hash(key)=key mod 11,用线性探测法处理冲突,建表如下: 8 29 7 3 16 92 47 22 11 10 9 8 7 6 5 4 3 2 1 0 47、7、11、16、92均是由哈希函数得到的没有冲突的哈希地址而直接存入的; Hash(29)=7,哈希地址上冲突,需寻找下一个空的哈希地址: 由H1=(Hash(29)+1) mod 11=8,哈希地址8为空,将29存入。另外,22、8同样在哈希地址上有冲突,也是由H1找到空的哈希地址的; 而Hash(3)=3,哈希地址上冲突,由 H1=(Hash(3)+1) mod 11=4 仍然冲突; H2=(Hash(3)+2) mod 11=5 仍然冲突; H3=(Hash(3)+3) mod 11=6 找到空的哈希地址,存入。 线性探测法可能使第i个哈希地址的同义词存入第i+1个哈希地址,这样本应存入第i+1个哈希地址的元素变成了第i+2个哈希地址的同义词,……,因此,可能出现很多元素在相邻的哈希地址上“堆积”起来,大大降低了查找效率。为此,可采用二次探测法,或双哈希函数探测法,以改善“堆积”问题。 2. 二次探测法 Hi=(Hash(key)±di) mod m 其中: Hash(key)为哈希函数 m为哈希表长度,m要求是某个4k+3的质数(k是整数) di 为增量序列 12,-12,22,-22,……,q2,-q2且q≤ (1/2)*(m-1) 关键码集为 {47,7,29,11,16,92,22,8,3},用二次探测法处理冲突,建表如下: 8 29 7 16 92 47 3 22 11 10 9 8 7 6 5 4 3 2 1 0 对关键码寻找空的哈希地址只有3这个关键码与上例不同, Hash(3)=3,哈希地址上冲突,由 H1=(Hash(3)+12) mod 11=4 仍然冲突; H2=(Hash(3)-12) mod 11=2 找到空的哈希地址,存入。 ? 2.再哈希法 这种方法是同时构造多个不同的哈希函数: Hi=RH1(key) i=1,2,…,k 当哈希地址Hi=RH1(key)发生冲突时,再计算Hi=RH2(key)……,直到冲突不再产生。 3.链地址法 基本思想:将所有哈希地址为i的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。 关键码序列为47,7,29,11,16,92,22,8,3,50,37,89, 94,21,哈希函数为 Hash(key)=key mod 11,建表如下图 ^ 9 10 8 7 6 5 4 3 ^ 2 1 0 22 ^ 89 3 37 ^ 16 94 29 ^ 8 ^ 21 ^ 11 ^ 47 ^ 92 ^ 50 ^ 7 拉链法处理冲突时的哈希表 (向链表中插入元素均在表头进行) 1.4.4 哈希法性能分析 哈希法中影响关键字比较次数的因素有三个:哈希函数、处理冲突的方法以及哈希表的装填因子。哈希表的装填因子α的定义如下: α= 哈希表中元素个数 哈希表的长度 α可描述哈希表的装满程度。显然,α越小,发生冲突的可能性越小,而α越大,发生冲突的可能性也越大。 几种不同的方

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档