- 1、本文档共33页,可阅读全部内容。
- 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.1 顺序查找 7.6 本章小结 7.5 哈希表查找 7.2 二分查找 7.3 分块查找 7.4 二叉排序树查找 7.1 顺序查找 顺序查找是一种最简单的查找方法。它是从线性表的一端开始,顺序扫描线性表,依次将扫描到的结点关键字和给定值k相比较,若当前扫描到的元素关键字与k相等,则查找成功;若扫描结束后,仍未找到关键字等于k的结点,则查找失败。 例7.1 在关键字序列为{3,9,1,5,8,10,6,7,2,4}的线性表查找关键字为6的元素。 typedef struct { KeyType key; /*存放关键字,KeyType为关键字类型*/ ElemType data;/*其他数据,ElemType为其他数据的类型*/ } LineList; int SeqSearch(LineList R[],int n,KeyType k) { int i=0; while (in R[i].key!=k) i++; if (i=n) return(-1); else return(i); } 假定查找机会均等,则顺序查找成功时的平均查找长度为: 二分查找也称为折半查找,要求线性表中的元素必须已按关键字递增或递减顺序排列。它首先用要查找的关键字k与中间位置的元素的关键字相比较,这个中间元素把线性表分成了两个子表,若比较结果相等则查找完成;若不相等,再根据k与该中间元素的关键字比较的结果确定下一步查找哪个子表,这样递归进行下去,直到找到满足条件的元素或者该线性表中没有这样的元素。 7.2 二分查找 例如 在关键字有序序列{2,4,7,9,10,14,18,26,32,40}中采用二分查找法查找关键字为7的元素。 二分查找过程如下: 开始: 2 4 7 9 10 14 18 26 32 40 第1次:2 4 7 9 10 14 18 26 32 40 第2次:2 4 7 9 10 14 18 26 32 40 第3次:2 4 7 9 10 14 18 26 32 40 查找成功,返回序号2 high=9 low=0 low=0 high=3 low=2 high=3 mid=4 mid=1 mid=2 int BinSearch(LineList R[],int n,KeyType k) { int i,low=0,high=n-1,mid; int find=0;/*find=0表示未找到;find=1表示已找到*/ while (low=high !find) { mid=(low+high)/2; /*整除取中间值*/ if (kR[mid].key) high=mid-1; else if (kR[mid].key) low=mid+1; else { i=mid; find=1; } } if (find==0) return(-1); else return(i); } 二分查找过程可用二叉树来描述,我们把当前查找区间的中间位置上的记录作为根,左子表和右子表中的记录分别作为根的左子树和右子树,由此得到的二叉树,称为描述二分查找的判定树或比较树。 例见 P160 假定查找机会均等,则二分查找成功时的平均查找长度为: 分块查找又称为索引顺序查找,是顺序查找的一种改进,其性能介于顺序查找和二分查找之间。 分块查找要求把线性表分为若干块,每块中存储的元素的关键字不一定有序,但前一块中的最大(或最小)关键字必须小于(或大于)后一块中的最小(或最大)关键字,即要求表是“分块有序”的; 另外还需要建立一个索引表,索引表中的一项对应线性表的一块,索引项有关键字域(存放相应块的最大、最小关键字)和链域(存放相应块第一个元素的指针)组成。索引表是一个递增(或递减)有序表。 分块查找过程分为两步,首先确定待查找的元素属于哪一块,即查找其所在的块;然后在块内查找要查的元素。 7.3 分块查找 例 设有一个线性表,其中包含25个记录,其关键字序列为{8,14,6,9,10,22,34,18,19,31,40,38,54,66,46,71, 78,68,80,85, 100, 94,88,96,87}。假设将25个记录分为5块,每块中有5
您可能关注的文档
- word2003中表格的数据排序.ppt
- 安装、配置oracle应用服务器.ppt
- 白云技校计算机软件编程(JAVA方向)2013年春季招生简章.ppt
- 北大青鸟J2EE课件 4.ppt
- 北大青鸟Java1.ppt
- 北大青鸟-JSP教程 (6).ppt
- 编译原理 之 语法制导翻译和中间代码生成.ppt
- 编译原理-语法制导翻译生成中间代码.ppt
- 变量和运算.ppt
- 变数资料型态-JAVA程式语言入门.ppt
- DB4405T288-2019 嘉氏羊蹄甲栽培技术规程.docx
- DB42T 1759.2-2021 生草栽培技术规程 第2部分:桃园.docx
- DB3711T149-2023 湿地植被恢复技术规程.docx
- DB61_T 582-2024 地理标志产品质量要求 横山羊肉.docx
- DB4401_T176-2022水功能区水质监测技术规范.docx
- DB43/T 2378-2022百合鳞茎腐烂病综合防控技术规程.docx
- DB45T2460-2022 克氏原螯虾稻田生态种养技术规程.docx
- DB4409T18-2021 黄皮嫁接育苗技术规程.docx
- DB3701T 485-2024 金银花生产技术规程.docx
- DB5106T08-2020 市场监管执法队伍行为规范.docx
最近下载
- 烘焙食品卫生安全管理制度.docx VIP
- 产科健康宣教手册.pdf VIP
- 2025年各种粘胶剂行业深度研究分析报告.docx
- CJ_T 457-2014 高杆照明设施技术条件.docx
- 2022杭州萧山环境投资建设集团有限公司招聘试题及答案解析.docx VIP
- 神经外科脑脊液外引流中国专家共识(2018版).pdf VIP
- 模板04 词语、句子、段落(作用、赏析)类题型(答题模板-2025年中考语文答题技巧与模板构建(全国通用)解析版.docx VIP
- GBT 5744-2023 船用气动快关阀.pdf
- 国有企业投资项目管理办法模板.docx VIP
- 省级中医药优秀人才研修项目结业试卷及答案 .pdf VIP
文档评论(0)