高中二年级下学期信息科技《查找》教学课件_第1页
高中二年级下学期信息科技《查找》教学课件_第2页
高中二年级下学期信息科技《查找》教学课件_第3页
高中二年级下学期信息科技《查找》教学课件_第4页
高中二年级下学期信息科技《查找》教学课件_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论