- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 查找 第7章 查找 第7章 查找(Search) Introduction 查找是非数值处理中一种最基本、最重要的操作。 查找,也称检索,是一种运算,是软件设计中经常遇到的一种运算。数据结构不同,查找方法也会不同。查找方法的好坏直接影响着计算机的使用效率。 7.1、查找基本概念 1)查找 Search:又称检索,是指在大量的数据中寻找关键字等于给定值的记录。若存在这样一个记录,则称查找成功,否则称查找不成功。 分为:静态查找;动态查找; 2)关键字 (Keyword):就是数据元素中可以唯一标识一个数据元素的数据项。 例如:学生管理登记卡中的学号。 3)平均查找长度 (Average Search Length) (ASL) 算法评价 :评价时考虑:(1) 速度; (2) 占用存储空间; (3) 复杂程度。 结构体数组 typedef struct {char name[10]; KeyType key; }DataType; DataType r[Maxnum]; 算法分析: int seqsearch(DataType r[], int key, int n) {int i; r[0].key=key; i=n; while(r[i].key!=key) i--; return i; } 算法分析 算法简单,效率较低 Search int binsearch(DataType r[],int n,int key) {int low,high,mid; low=0; high=n-1; while(low=high) {mid=(low+high)/2; if(key==r[mid].key)return mid; else if(key r[mid].key) low=mid+1; else high=mid-1; } returu –1; } 折半法算法分析 假设:查找关键字为0-6的数据 比顺序查找效率高 只适用于有序的顺序存储的表, 3. 分块查找(索引顺序表查找) 将顺序查找法与折半查找法结合 索引表类型: 算法分析 7.3. 基于树的查找 用树结构存储记录既可查找又可插入和删除 1.树表查找方法: 二叉排序树查找 平衡二叉排序树查找 B-树查找 (1) 二叉排序树的定义: 或是空树,或具有以下性质的二叉树: ①其左子树上所有结点的数据均小于根结点的数据值. ②其右子树上所有结点的数据均大于或等于根结点的数据值. ③左、右子树又各是一棵二叉排序树。 (2)二叉排序树的生成 生成一棵二叉排序树,过程如下: ①若二叉排序树为空,则令待插结点为根结点, ②若二叉排序树非空,则比较待插结点(k1)和根结点(k2)的数据值。若k1k2,则将其插入到左子树中;否则,将其插入到右子树中. ③结点插入二叉排序树的左、右子树过程同上. 课堂练习: 用以下序列组成一棵二叉排序树. {23,4,12,89,9,43,4,56,23} ①插入的新结点都是二叉排序树的叶子结 点.不必移动其它结点.常用于有序二叉树 的插入,删除. ②对二叉排序树采用中序遍历,其结果为一有序序列. ③根结点的选择,决定二叉树的形状,其形状决定检索的效率.根结点数据值最好选择元素序列的中间值. BiTree *btsearch(BiTree *p, int key) //p指向二叉排序树的根结点 {while(p!=NULL) {if(key==p-key) return p; else if(keyp-key) p=p-L; else p=p-R; } return NULL; } 4. 算法分析 7.4 哈希查找(散列查找) 前述的查找方法建立在“比较”的基础上,查找的次数依赖于查找过程中进行比较的次数。 问题:能否不用比较就能直接计算出记录的存储地址,从而找到所要的结点? ----采用散列(hash)方法。 1.哈希(散列)表的基本概念 哈希(又称杂凑、散列)的基本思想: 以记录的关键字值k为自变量,通过一定的函数关系h计算出对应的函数值h(k),把这个值解释为记录的存储地址(哈希地址),将记录存入该地址中
您可能关注的文档
- 实用写作第三次作业详解.doc
- 第五章 uml课件Lect4-Grad-OO-Chapter3-classes and objects-2.ppt
- 荣耀小口哨使用指导手册的知识.pdf
- 怎样以32位的方式存取SDRAM.doc
- 第三章 NBU日常维护命令.pdf
- 循序渐进学Python之循环语句资料.doc
- 系统结构chpt1幻灯片.ppt
- 第七章 自动测试系统集成.ppt
- 计算机操作系统入门第六篇.ppt
- 怎样更改QQ默认浏览器?更改QQ默认浏览器的方法.ppt
- 2.2.1 2~6的乘法口诀教学课件 2025人教版数学二年级上册.ppt
- 3.1.2 除法的初步认识(2)(教学课件) 2025人教版数学二年级上册.ppt
- 3.3 整理和复习(教学课件) 2025人教版数学二年级上册.ppt
- 道法人教版(2025)8上2.5.3《友善待人》课件.ppt
- 2.2.3 2~6的乘法口诀(3)(教学课件) 2025人教版数学二年级上册.ppt
- 1分类与整理(2)(教学课件) 2025人教版数学二年级上册.ppt
- 道法人教版(2025)8上1.2.2《养成亲社会行为》课件.ppt
- 4.4 厘米和米教学课件 2025人教版数学二年级上册.ppt
- 5.1.2 7~9的乘法口诀 教学课件 2025人教版数学二年级上册.ppt
- 2.2.2 2~6的乘法口诀(2)(教学课件) 2025人教版数学二年级上册.ppt
最近下载
- 长期卧床患者的体位护理技巧.pptx VIP
- JBT14159.3-2022 空气分离设备能效限额第3部分:液化设备.pdf VIP
- 《民用建筑设计通则》图示.docx VIP
- 灭火应急疏散预案.doc VIP
- 铁路内燃、电力司机考试题库.doc VIP
- 新概念英语第一册 Lesson 55-56 课件.ppt VIP
- 2025AI+BI峰会:DeepInsight Copilot 演进史以及未来探索.pdf VIP
- 《临床药学文献阅读汇报抗感染粘菌素在治疗鲍曼不动杆菌感染vap中的应用》课件模板.ppt VIP
- 2025年福建公需课答案.pdf VIP
- 2020四川园林绿化工程说明及计算规则.pdf VIP
文档评论(0)