- 1、本文档共76页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构之查找课件
数据结构 第八章 查找 第八章 查找 知 识 点 查找的基本概念 三种基本查找方法:顺序查找、二分查找和分块查找 树型查找的基本概念和查找算法 散列法、散列函数冲突的基本概念和解决冲突方法 难 点 二叉排序树查找 平衡树及平衡树的调整 要 求 熟练掌握以下内容: 三种基本查找方法的基本思想和算法 二叉排序树查找的基本思想和算法 散列法基本思想、散列函数的常用构造方法及解决冲突方法 了解以下内容: 平衡树及平衡树的调整 B-树查找 第八章目录 8.1 查找的基本概念 8.2 基本查找方法 8.3 树型查找 8.4 散列法 8.5 应用举例及分析 小 结 习题与练习 8.1 查找的基本概念 查找又称为查询或检索,是在一批记录中依照某个域的指定域值,找出相应的记录的操作。 在计算机中,被查找的数据对象是由同一类型的记录构成的集合,可称之为查找表(search table)。 在实际应用问题中,每个记录一般包含有多个数据域,查找是根据其中某一个指定的域进行的,这个作为查找依据的域称为关键字(key)。 对于给定的关键字的值,如果在表中经过查找能找到相应的记录,则称查找成功,一般可输出该记录的有关信息或指示该记录在查找表中的位置。若表中不存在相应的记录,则称查找不成功,此时应该给出不成功的信息。 查找算法中的基本运算是记录的关键字与给定值所进行的比较,其执行时间通常取决于比较的次数。因此,通常以关键字与给定值进行比较的记录个数的平均值,作为衡量查找算法好坏的依据。 8.2 线性表的查找 1。顺序查找(Sequential search) 基本思想:查找从线性表的一端开始,顺序将各单元的关键字与给定值k进行比较,直至找到与k相等的关键字,则查找成功,返回该单元的位置序号;如果进行到表的另一端,仍未找到与k相等的关键字,则查找不成功,返回0作为查找失败的信息。 顺序查找的线性表定义如下: Typedef struct rectype { keytype key; itemtype item1 …… }rectype; 顺序查找算法 int sequsearch (r[], n, k) { /*R[1…N]中存放N个元素*/ r[0].key=k; i=n; while (r[i].key!=k) i--; return(i); } 顺序查找算法分析 监视哨的作用 最坏的情况查找成功需比较n次,最好的情况是比较1次,如果对每个关键字进行查找的概率相等,则查找成功所需的平均比较次数为(n+1)/2,而查找失败则需比较(n+1)次,时间复杂度为O(n)。 顺序查找的优点是算法简单、适应面广,且不要求表中数据有序。缺点是平均查找长度较大,特别是当n较大时,查找效率较低,不宜采用。 2.折半查找 折半查找又称二分查找(Birary search)。 假设记录在查找表R[1…n]中按关键字排列有序。首先用k与查找表中间元素的关键字比较,。。。。。。 比较结果有三种可能: ⑴ 如果r[m].keyk,说明如果存在欲查找的元素,该元素一定在数组的前半部分,查找范围缩小了一半,修改查找范围的的上界high=m-1,继续对数组的前半部分进行二分查找; ⑵ 如果r[m].keyk,说明如果存在欲查找的元素,该元素一定在数组的后半部分,查找范围缩小了一半,修改查找范围的的下界low=m+1,继续对数组的后半部分进行二分查找; ⑶ 如果r[m].key=k,查找成功,m所指的记录就是查找到的数据。 重复上述过程,查找范围每次缩小1/2,当范围不断缩小,出现查找范围的下界大于上界时,则查找失败,确定关键字为key的记录不存在。 例:从下列序列中查找K=21的记录 5 13 19 21 37 56 64 75 80 88 92 int binsearch(r[], n, k) /*记录存储在r[1…n]中 { int low=1,hig=n, mid; while (low=hig) { mid=(low+high)/2; if (r[mid].key==k) return(mid); else if (r[mid].keyk) low=mid+1; else hig=mid-1; } return
您可能关注的文档
- 数字电子技术课程设计数字秒表.doc
- 数字电子时钟实训1306.doc
- 数字电路与系统第六章-3.ppt
- 数字电路01-第一章-数制和码制-y.ppt
- 数字电子技术基础-触发器.ppt
- 数字电路03-第三章-门电路-简单-y.ppt
- 数字电路受控源电路的分析.ppt
- 数字电路第二章答案.doc
- 数字看生活.ppt
- 数字蜂窝技术.doc
- 连带责任处罚制度.doc
- 2024-2025学年高中数学选择性必修 第一册人教A版(2019)教学设计合集.docx
- 连防小学安全文明校园岗位职责.doc
- 2024-2025学年高中通用技术选择性必修1《电子控制技术》苏教版(2019)教学设计合集.docx
- 2024-2025学年高中通用技术选择性必修6 智能家居应用设计粤科版(2019)教学设计合集.docx
- 2024-2025学年高中通用技术选择性必修9 创造力开发与技术发明粤科版(2019)教学设计合集.docx
- 2024-2025学年高中思想政治(必修4)生活与哲学人教版教学设计合集.docx
- 2024-2025学年高中物理必修 第二册粤教版(2019)教学设计合集.docx
- 2024-2025学年高中物理选修3-5鲁科版教学设计合集.docx
- 2024-2025学年高中英语必修 第三册北师大版(2019)教学设计合集.docx
文档评论(0)