- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8 查 找 8.1 二分(折半)查找 一、二分查找的先决条件 表中结点按关键字有序,且顺序(一维数组)存储。 二、二分法思想:取中,比较 (1)求有序表的中间位置mid (2)若r[mid].key==k,查找成功;若r[mid].keyk,在左子表中继续进行二分查找;若r[mid].keyk,则在右子表中继续进行二分查找。 1234567 8 9 10 11i=1,j=11, m=(i+j)/2=6。 r[m]k : 在右半部分继续查找。i=m+1=7,j=11, m=(i+j)/2=9。 r[m]k : 在左半部分继续查找。i=7, j=m-1=8, m=(i+j)/2=7。 r[m]k : 在右半部分继续查找。i=m+1=8,j=8, m=(i+j)/2=8。 r[m]k : 在左半部分继续查找。i=8, j=m-1=7 ,ij: 查找失败 三、存储结构key infotypedef struct {keytype key;………….} elemtype;四、算法描述 int Search_bin (elemtype r[], int n, keytype k) {// r[1]..r[n] 是按key排序的n个元素,在表中查找 k i=1 ; j=n ; while ( i=j ) {mid=(i+j)/2 ; //取中if (k== r[mid].key) return (mid) ; // 查找成功else if (k r[mid].key) j=mid-1; //在左半部分继续查找else i=mid+1; //在右半部分继续查找 } return(0);// k不在该有序表中。r[j].keykr[i].key } 五、二分查找判定树(以11个结点为例) 8.2 二叉排序树 三、二叉排序树的查找 8.3 平衡二叉树(AVL树) 8.4 hash(散列)查找 一、hash函数hash表设计1个hash函数,计算Hash函数, 其函数值恰好 是 key 在 hash 表中的地址 hash(key)=i (0..m-1) 二、hash查找的特点 ——基于计算 例8.3 hash查找示例。人口统计表。 在右表中查找 1989年出生的人数。 查找方法(1):顺序查找 查找方法(2):二分查找 查找方法(3):hash 查找 hash(key)=key-1949=1989-1949=40 三、hash函数的构造方法 ——除留余数法hash(key)=key%pp≤m (表长)的最大质数四、冲突的概念与处理方法 若对于不同的键值k1和k2,且k1 ≠ k2, 但 hash(k1)=hash(k2),即具有相同的散列地址,这种现象称为冲突。称 k1、k2称为同义词。例8.4 key={3,15,20,24},m=5(表长),hash(k)=k%5hash(15)=0hash(20)=0 产生冲突。 冲突的处理——链地址法 将具有相同散列地址的记录都存储在同一个线性链表中。 例8.5 key={14,1,68,27,55,23,11,10,19,20,79,84}, hash(key)=key % 13, 用链地址法解决冲突, 构造hash表。 hash(14)=hash(1)=hash(27)=hash(79)=1 hash(68)=hash(55)=3 hash(19)=hash(84)=6 hash(20)=7 hash(23)=hash(10)=10 hash(11)=11 冲突的处理——线性探测法对给定的关键值 key,若地址d (即hash(key)=d) 的单元发生冲突,则依次探查下述地址单元:d+1,d+2,….,m-1, 0 ,1,…d-1 直到找到一个开放的地址(空位置)止,将发生冲突的键值 放到该地址中。设增量函数为d(i)=1,2,3,……m-1, m表长i: 为探测次数。9 内部排序(1)构造堆的方法按堆的定义将r[1]..r[n]调整为堆。 (2)调整方法(筛选法) --左右孩子比较 --父子比较四、各种内部排序方法的比较排序方法平均时间最坏情况辅助存储空间 稳定性 直接插入排序O(n2)O(n2)O(1)Y 冒泡排序O(n2)O(n2)O(1)Y 简单选择排序O(n2)O(n2)O(1)N 快速排序O(nlog2n)O(n2)O(log2n)N 堆排序O(nlog2n) O(nlog2n)O(1)N 归并排序O(nlog2n) O(nlog2n)O(n)Y 基数排序O(n)O(n)O(rd)Y 堆 堆 堆 调整
您可能关注的文档
最近下载
- 《人工智能导论》第2版 题库.pdf VIP
- 储能电站技术方案设计(1).doc VIP
- 《前沿人工智能:发展与治理》 前沿人工智能的发展与应用(1).pdf VIP
- 核聚变装置(人造太阳)资料.ppt VIP
- 2024年11月24日四川省事业单位考试《公共基础知识》试题及答案解析.pdf VIP
- 统编版2024语文三年级上册第四单元习作我来编童话PPT.pptx VIP
- 合同订单评审控制程序模板.doc VIP
- 西南13J903-904景观无障碍.docx VIP
- 民兵学习护路知识课件.pptx VIP
- 外研版必修 第三册Unit 3 The world of science Using language 课件 (共21张PPT).pptx VIP
文档评论(0)