软件技术基础姚全珠第4章查找和排序(绝对免费!供大家学习).pptVIP

软件技术基础姚全珠第4章查找和排序(绝对免费!供大家学习).ppt

  1. 1、本文档共85页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件技术基础姚全珠第4章查找和排序(绝对免费!供大家学习)

计算机软件基础 二. 冲突的处理方法 1. 开放定址法 基本思想:若在某个地址处发生了冲突,则沿着一个特定的探测序列在哈希表中探测下一个空单元,一旦找到,则将新元素存入此单元中。其探测的序列可用下式描述: Hi = mod(( H(k) + di ) ,m ) (i = 1,2,3,… ) (1)当di取1,2,3,…,m –1时,称为线性探测再散列; (2)当di取12,–12,22,–22, 32,–32,…,±j2(j≤m/2)时,称为二次探测再散列。 计算机软件基础 2. 链地址法 基本思想:为每个哈希地址建立一个单链表,将所有哈希地址相同的元素存储在同一单链表中,单链表的头指针存放在基本表中。在将某个关键字的结点向单链表中插入时,既可以插在链尾上,也可以插在链头上。 计算机软件基础 例:设有关键字序列(62,30,18,45,21,78,66,32,54,48),现用除留余数法作为哈希函数,分别用①线性探测再散列、②二次探测再散列处理冲突、③链地址法处理冲突,画出所生成的哈希表 。 关键字 62 30 18 45 21 78 66 32 54 48 地址 7 8 7 1 10 1 0 10 10 4 哈希地址表 计算机软件基础 0 1 2 3 4 5 6 7 8 9 10 66 45 78 32 54 48 ? 62 30 18 21 线性探测处理冲突生成的哈希表 0 1 2 3 4 5 6 7 8 9 10 66 45 78 54 48 ? 18 62 30 32 21 二次探测处理冲突生成的哈希表 计算机软件基础 66 78 45 48 18 62 30 21 32 1 3 2 9 10 6 7 8 4 5 0 54 ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ 链地址法处理冲突生成的哈希表 计算机软件基础 思考:一旦按照某种处理冲突的方法生成了哈希表,如何在此哈希表上实现指定关键字值元素的查找? 解决方法:哈希查找的过程实质上就是按照建立哈希表时处理冲突的方法,根据哈希地址在哈希表上查找指定关键字的元素。由于冲突的存在,在哈希查找过程中对关键字的比较次数可能不只一次。 计算机软件基础 三. 哈希查找 算法前提: 1.除留余数法作为哈希函数 hash (k) = mod(k , p); 2. 用线性探测再散列处理冲突; 3.哈希表已经建好(哈希表空间为0 ~ m-1) 算法: 计算机软件基础 算法: function hash(k) parameter (p=13) integer hash hash=mod(k,p) end function hashsearch(ht,k) parameter (m=15) * 结构体类型list定义略 integer hashsearch,hash,i,h record/list/ ht(0:m-1) 计算机软件基础 h=hash(k) i=0 do 10 while(i.lt.m.and.ht(h).key.ne.k) h=mod(h+1,m) i=i+1 10 continue if(i.lt.m) then hashsearch=h else hashsearch=-1 endif end 计算机软件基础 4.5 直接插入排序 一. 基本思想 将整个数据表(n个记录)看成是由无序表和有序表两个部分组成,初始状态时,有序表中仅有第一个记录,排序共需进行n-1趟,每趟排序时将无序表中的一个记录插入到有序表中的恰当位置,最终使整个数据表有序排列。 ? ? ? ? 计算机软件基础 例:对于关键字序列{38,20,46,38,74,91,12,25}进行直接插入排序,写出排序过程中每趟排序的结果。 初始状态 [38] [20 46 38 74 91 12 25] 第一趟 [20 38] [46 38 74 91 12 25] 第二趟 [20 38 46] [38 74 91 12 25]

文档评论(0)

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

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

1亿VIP精品文档

相关文档