版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.2查找5.2查找1、查找的意义信息学是处理大量信息的学科。除了对于收集到的信息转为数据进行处理和存储外,一个重要的需求就是对存储的数据进行查找。日常生活中,我们就经常进行查找工作,例如在图书馆中查找图书、在字典中查找汉字等。如果将图书目录、字典等视作一张表,查找则是在一个含有众多数据元素的表中找出某个特定的数据元素。在信息时代,由于信息量巨大,人工查找非常困难,因此需要依赖于计算机快速准确地查找信息5.2查找1、查找的意义顺序表是指采用顺序存储的方式存储的集合或线性表。本节所讨论的两种查找方法,均是针对一维数组这种顺序表的查找方法。5.2查找2、顺序查找顺序查找又称线性查找。顺序查找的基本思想:
从顺序表的一端开始,依次将每个元素的关键字与给定值k进行比较,如果相同,则查找成功,返回该元素的下标;如果所有元素比较后仍然找不到关键字为k的元素,则查找失败,返回特定值-1。5.2查找2、顺序查找例如,要实现查询超市中某个商品在哪个货架,可以用数组存储商品的编号、存放的货架等信息。程序运行时,输入需查询商品的编号,然后在数组中依次查找编号,即可根据编号对应的下标提取出商品的信息。5.2查找2、顺序查找intsearch(ShangPinTypea[],intk,intn){ //在有n个元素的数组a中查找编号k。 for(inti=0;i<n;i++) if(k==a[i].Bianhao)returni; //查找成功,返回商品对应的数组下标。
return-1; //查找失败,返回-1}5.2查找3、二分查找顺序查找的思想易于理解,但其缺点也很明显:
如果商品的数量过多,顺序查找每次都需要在数组中从头到尾依次查找,消耗大量时间。因此,为了加快查找的速度,可以使用另一种查找方式:二分查找。5.2查找3、二分查找二分查找,又称折半查找。适用于顺序存储的有序表(各元素按关键字的值升序或降序存放的表)进行的查找。二分查找的思想:
利用有序表的有序性,每次将待查找元素所处的可能区间范围缩小一半,以达到快速定位查找元素的目的。
通过每次比较当前范围的中间元素与待查找元素的相对大小,可以确定待查找元素位于当前区间的左侧还是右侧。5.2查找3、二分查找以升序存储的有序表a为例,二分查找的主要思路如下:(1)设定当前的查找范围l=0,r=n-1。(2)选定查找范围的中点元素mid=(l+r)/2,与k值比较
(a)若k==a[mid],则查找成功,返回该元素的下标
(b)若k<a[mid],则将范围缩小到左子表a[l]~a[mid-1]
(c)若k>a[mid],则将范围缩小到右子表a[mid+1]~a[r](3)迭代上述过程,直到找到k或当前查找区间为空(查找失败)5.2查找intbinsearch(ShangPinTypea[],intk,intn){ //在n个元素的升序表a中二分查找k intl=0,r=n-1; //初始化查找范围的下界与上界 while(l<=r) //终止条件为查找范围为空,即l>r { intmid=(l+r)/2; //取出中间元素下标 if(k==a[mid].BianHao)returnmid; //查找成功 elseif(k<a[mid].BianHao)r=mid-1; //如果没有找到且编号偏小,则修改上界前往左子表 elsel=mid+1; //否则修改下界前往右子表。 } return-1; //查找范围为空时仍未找到,则查找失败。}5.2查找3、二分查找例:假设一维升序数组a中有10个元素:1,2,6,8,12,13,36,45,49,85。现模拟查找k=45的二分查找过程:
下标:0123456789
元素:1268121336454985
LRMid5.2查找3、二分查找例:假设一维升序数组a中有10个元素:1,2,6,8,12,13,36,45,49,85。现模拟查找k=45的二分查找过程:
下标:0123456789
元素:1268121336454985
LRMidLMid5.2查找3、二分查找例:假设一维升序数组a中有10个元素:1,2,6,8,12,13,36,45,49,85。现模拟查找k=48的二分查找过程:
下标:0123456789
元素:1268121336454985
LRMid5.2查找3、二分查找例:假设一维升序数组a中有10个元素:1,2,6,8,12,13,36,45,49,85。现模拟查找k=48的二分查找过程:
下标:0123456789
元素:1268121336454985
LRMidLMid5.2查找3、二分查找例:假设一维升序数组a中有10个元素:1,2,6,8,12,13,36,45,49,85。现模拟查找k=48的二分查找过程:
下标:0123456789
元素:1268121336454985
LRMidLMid5.2查找3、二分查找例:假设一维升序数组a中有10个元素:1,2,6,8,12,13,36,45,49,85。现模拟查找k=48的二分查找过程:
下标:0123456789
元素:1268121336454985
LRL>R,查找失败RMid5.2查找3、二分查找解决同一个问题,可以使用不同的算法编写程序,从而对数据结构有不同的要求。对比顺序查找和二分查找:(1)数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 领导者在冲突中的调解技巧计划
- 信阳师范大学《Java语言程序设计实验》2022-2023学年第一学期期末试卷
- DB32-T 4723-2024 石墨烯材料包装储运通.用要求
- 西华大学《Java程序设计》2021-2022学年第一学期期末试卷
- 西昌学院《简笔画》2022-2023学年第一学期期末试卷
- 西北大学现代学院《网络与新媒体写作》2021-2022学年第一学期期末试卷
- 西北大学《平面构成》2021-2022学年第一学期期末试卷
- 10.2+常见的酸和碱教学设计-2024-2025学年九年级化学人教版(2024)下册
- 环烯烃共聚物(COC、COP)市场现状及发展前景分析
- 陕西省西安市蓝田县2023-2024学年部编版八年级历史上学期期末质量检测试卷
- 立式储罐现场制作安装施工方案
- 中心静脉导管血栓的预防及处理
- 《教师压力缓解》PPT课件.ppt
- 衬里工业管道施工工艺标准
- GB∕T 23801-2021 中间馏分油中脂肪酸甲酯含量的测定 红外光谱法
- (完整word版)原油的API度与比重换算表及类型划分
- 事故调查报告记录表
- 2023年最新小学六年级语文试卷双向细目表
- 年产32000t粗锌电炉熔炼车间设计
- 毕业设计(论文)基于单片机的智能窗帘控制系统的设计
- 宁德市“十个十佳”旅游品牌评选活动方案
评论
0/150
提交评论