版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.4数据查找2课时(分层作业)【基础达标】1.查找又称,计算机根据所给条件查找出满足条件的对象,即寻找出,或者确定在该批数据内是否存在这样的数据。2.若没有找到满足条件的对象,则返回特定值,表明查找;若查找到满足条件的对象,则表明查找,一般要求返回。3.顺序查找又称,从的一端开始,依次将每个元素的关键字与给定值key(查找键)进行比较。若某个元素的关键字等于key,则表明查找成功;若所有元素都比较完毕仍找不到,则表明查找失败。4.顺序查找将待查找的数值与序列中的数,直到找出与给定数值相同的数为止,其算法简单,时间复杂度为。5.二分查找又称、。它是一种效率很高的查找方法,但被查找的数据序列必须是。二分查找首先将查找键与内处于位置的元素进行比较,如果中间位置上的元素的数值与查找键,根据数组元素的有序性,就可确定在数组的还是继续查找;在新确定的范围内,继续按上述方法进行查找,直到获得最终结果。6.二分查找过程中的每一次判断都是将需要查找的值和数组的中间值进行不断的比较,直到找到或找遍。7.二分查找过程可用来描述,树中的每个根节点对应当前查找区间的中点元素,它的左子树和右子树分别对应该区间的左子表和右子表,通常把此树称为。8.二叉排序树的排序功能主要通过二叉树的和过程来实现。9.二叉查找树的查找过程为:首先将给定值和根节点的比较,若相等,则查找成功;若不相等,则根据给定值和根节点关键字之间的大小关系,在或中继续进行查找。若查到为时,说明该树中没有待查记录,故查找不成功。10.给定任意的查找键,在序列3,5,8,12,15,23中进行数据查找,下列说法不正确的是()A.若用顺序查找实现,则最少查找1次B.若用二分查找实现,则最少查找1次C.若用顺序查找实现,则最多查找6次D.若用二分查找实现,则最多查找4次11.若线性表采用链式存储结构,则适用的查找方法为()。A.随机查找B.散列查找C.二分查找D.顺序查找【巩固提升】1.某数组有10个元素,依次为10、23、32、40、55、64、77、81、93、100,若采用对分查找法在该数组中查找数据93,依次被访问的数据为()A.64、81、92B.55、77、81、93C.55、81、93D.64、81、100、932.数组里有12个元素,依次为:34、40、41、43、53、55、65、70、72、74、80、95,下列选项中不正确的是()A.如使用顺序查找法,53需要查找5次B.如使用对分法查找,53需要查找3次C.如使用顺序查找法,70需要查找8次D.如使用对分法查找,70需要查找4次3.分别使用顺序查找算法和二分查找算法在数据序列“5,6,10,13,15,20,21.26,30”中查找数据10,下列关于查找的次数的说法中正确的是()A.顺序查找2次,二分查找3次B.顺序查找3次,二分查找2次C.顺序查找3次,二分查找3次D.顺序查找3次,二分查找4次4.在10个有序的数“21,45,56,65,68,72,79,83,88,96"中查找75,则依次需要进行比较的数据是()A.68,83,72B.21,45,56,65,68,72,79C.68,83,72,79D.68,45,56,655.在7个有序的数列“1,2,3,4,5,6,7”中,采用二分查找法查找数值key,依次需要进行比较的数据可能是()A.4B.4,6,2C.4,2,5D.4,6,5,76.下列有关查找的说法中,正确的是()A.顺序查找时,被查找的数据必须有序B.对分查找时,被查找的数据不一定有序C.顺序查找总能找到要查找的关键字D.一般情况下,对分查找的效率较高7.下列有关查找的说法中,不正确的是()A.采用顺序查找时,被查找的数据集中的元素无须有序B.采用二分查找时,被查找的数据集中的元素必须有序C.二分查找总能找到要查的键值D.二分查找的效率通常比顺序查找高8.下列有关查找的说法,正确的是()A.进行对分查找时,被查找的数据必须已按升序排列B.进行对分查找时,若查找的数据不存在,则无须输出结果C.在《新华字典》中查找某个汉字,最适合使用顺序查找D.对规模为n的数据进行顺序查找,平均查找次数是9.运用二分查找算法可以提高查找的效率,前提是待查找序列必须是()排序的。A.递增B.递减C.有序D.无序10.已知单调函数f()在[0,1]区间上存在一个x0,使f(x0)=0。现用对分查找法搜索x0的值,开始搜索区间为[0,1],若经过10次对分查找后还需继续搜索,则第11次搜索区间的长度为()A.B.C.1/102D.1/21011.8位同学的语文数学成绩总分从高到低为“178,176,173,172,170,168,163,160。用二分查找法178的过程中,依次被访问到的成绩数据是()A.178B.172,176,178C.172,173,178D.172,173,176,17812.7位学生的身高(单位cm)从高到低依次为:178,177,175,172,170,165,162.用对分查找法找到178的过程中,依次被访问到的数据是()A.178B.172,175,178C.172,177,178D.172,175,177,17813.某数组d中的数据依次是[8,12,15,28,28,32,36,39],要查找某个元素是否在数组中,下列说法正确的是()A.数组中有相同数据28,所以只能使用顺序查找B.使用二分查找数据时,第1次查找的数据是d[3]C.使用二分查找任何查找键时,查找的次数最少3次D.使用二分查找数据时,第2次查找的数据可能是d[1]或d[6]14.数组P中存放着学生的相关信息,如图所示,若要查找数组中是否存在“小李”的信息,以下说法正确的是()P(1)P(2)P(3)P(4)P(5)P(6)P(7)P(8)P(9)P(10)小张小李小杨小陈小郑小王小邓小周小郭小范A.在数组P中既能使用顺序查找也能使用二分查找B.在数组P中使用顺序查找需要查找2次C.在数组P中使用二分查找需要查找4次D.在数组P中二分查找的效率高于顺序查找15.分别使用顺序查找算法和二分查找算法在数据序列“5,6,10,13,15,20,21,26,30”中查找数据10,下列关于查找的次数的说法中正确的是()A.顺序查找2次,二分查找3次B.顺序查找3次,二分查找2次C.顺序查找3次,二分查找3次D.顺序查找3次,二分查找4次【链接高考】1.用顺序查找在长度为10的某个数组中找某数,最少查找次,最多查找次。用对分查找在长度为10的某个数组中找某数,最少查找次,最多查找次。2.一段楼梯共有10级台阶,规定每步只能跨1级或2级,要登上第10级台阶有种不同的走法。3.有一段楼梯,共6级台阶,规定每一步只能跨1级、2级或3级,那么登上6级台阶有种不同走法。4.某查找算法的代码如下:key=inl(inpul("请输人待査元素key:"))a=[62,5,11,17,5.6,99,5,73,45]loc=1foriinrange(len(a)):ifa[i]==key:loc=ibreakifloc!=1:print(loc)else:print("查无此数")(1)当输入key的值为5时,执行该代码处理后输出的结果是。(2)若希望输出key最后一次出现的位置,只需要对代码进行修改操作。(3)该查找算法的时间复杂度为。5.数组a存放着一组正整数,其中奇数在前,偶数在后。奇数与偶数已分别升序排序,形如[1,7,13,15,21,2,4,8,22,26,30,36,40]。依据二分查找思想,小萌设计了一个从数组a中查找数据key的算法,其程序如下:i=0;j=9key=int(input("请输人待查数据:"))whilei<=j:m=(i+j)//2ifa[m]==key:breakifkey%2==0anda[m]%2==1:①elifkey%2==1anda[m]%2==0:②else:if③:j=m1else:i=m+1ifi>j:print("未找到")else:print("数组元素a["+str(m)+"]即为所求!")请在程序划线处填人合适的代码。①。②。③。6.一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则称为该序列为摇摆序列。小王同学想求出某个数列的最长摇摆子序列以序列[3,14,7,6,9,12,10,8,13,5]为例,整体不是摇摆序列,但子序列[3,14,7,9、[3,14,6,12]等都属于摇摆子序列,其中最长的摇摆子序列是[3,14,6,12,8,13,5]。根据图a分析得知,当序列有一段连续的递增(或递减)时,可形成摇摆子序列,我们只需要找到每一次转折中的拐点元素。小王编写了一个Python程序实现该功能:程序运行时,输入一串用逗号分隔和结束的数字,可以得到最长摇摆序列的长度,以及具体的序列。程序运行界面如图b所示:请输入以逗号分隔和结束的数据(不超过20个数):3,14,7,6,9,12,10,8,13,最长摇摆子序列长度为6最长摇摆子序列为:3,14,6,12,8,13图b(1)若输人数据“2,4,5,3,2,1”,则最长摇摆子序列为。(2)实现上述功能的Python代码如下,请在划线处填入合适的代码。s=input("请输人以逗号分隔和结束的数据(不超过20个数):")a=[0]*20;b=[False]*20flag,n,i,t,ans=0,0,0,’,’deff(n):f=1globalans#global表示此处的ans就是全局变量ansans=str(a[n1])foriinrange(n2,1,1) Ifb[i]:f=f+1①returnfforchins:ifch==”,”:a[i]=int(t);n+=1;i+=1;t=""else:t=t+chforiinrange(l,n):gd=Tirueifflag==0:ifa[i]>a[i1]:flag=1elifa[i]<a[i1]:flag=2else:gd=Falseelifflag==1anda[i]<a[i1]:flag=2elif②flag=1else:gd=False③iff(n)<3:print("不构成摇摆子序列")else:print("最长摇摆子序列长度为",str(í(n)))print("最长摇摆子序列为:",ans)7.设有n个顾客同时等待一项服务,顾客主需要的服务时间为ti(1≤i≤n),应如何安排n个顾客的服务次序才能使顾客总的等待时间达到最小。这个时间是多少?参考答案【基础达标】1.检索、在存储的一批数据内、一个特定的数据2.失败、成功、该对象的存储位置或对象值本身3.线性查找、顺序表4.顺序查找将待查找的数值与序列中的数逐个进行比较,直到找出与给定数值相同的数为止,其算法简单,时间复杂度为O(n)。5.折半查找、对分查找、有序的、有序数组、中间位置、不同、前半部分、后半部分6.整个序列7.一棵二叉树、二分查找的判定树。8.建立、遍历9.关键字、左子树、右子树、空树10.答案:D[解析]顺序查找时从头到尾逐个查找,数组中共有6个元素,所以最少可能一次找到,最多数组每个元素查找一遍共六次;二分查找查找的最多次数为logzn+1次,由于数组共有6个元素,所以最多查找次数为3次,最少为1次。综合以上信息,D项说法错误故选:D。11.答案:A[解析]随机查找表中元素时,访问表中任一元素所需时间与元素的位置和排列次序无关。以散列方式存储和查找数据时,元素的存储位置与其关键字相关。二分法查找只能在有序顺序表中进行。由于链表中的元素只能通过取得元素所在的节点的指针进行,因此只能顺序查找表中的元素。【巩固提升】1.答案:C[解析]利用对分查找的原理可以,第一次访问5位置的55,55<93,所以第二次访问81,82<93,第三次访问93,故选:C.2.答案:B[解析]顺序查找是比数据的第一个元素开始依次比较,AC两项分别查找53和70的次数为5次和8次,说法正确;B项对分查找53,i=1,j=12,m=(i+j)2=6,第6个元素为55,比53大,因此i=1,j=m1=5,m=(i+j)\2=3,第3个元素为41,41比53小,i=m+1=4,j=5,m=(i+j)\2=4,第4个元素为43,43比53小,因此,i=m+1=5,j=5,m=(i+j)\2=5,第5个元素为53,找到元素,共查找了4次,而非3次;故选:B.3.答案:C[解析]本题考查顺序查找和二分查找的算法思想。数据10是数据序列中第3个元素,因此使用顺序查找时,共查找3次。使用二分查找时,依次被访问的数据为15,6,10,即二分查找的次数也为3。4.答案:C[解析]从10个数“21,45,56,65,68,72,79,83,88,96"中查找75的二叉判定树如图所示,故答案选C。5.答案:[解析]该二分查找用二叉树表示如下,结合选项,可知依次需要进行比较的数据可能是4。故选A。6.答案:D[解析]顺序查找对被查找的数据是否有序没有要求而对分查找时被查找的数据必须有序。故A、B选项错误。顺序查找和对分查找都不能保证一定能找到要查找的关键字,C选项错误。顺序查找是对全部范围内的每个元素依次进行比较,而对分查找每次对一半范围内的数据进行比较,一般来说,对分查找的效率比顺序查找要高,D选项正确。故选:D。7.答案:C[解析]顺序查找对被查找的数据是否有序没有要求,而二分查找要求被查找的数据必须有序。顺序查找和二分查找都不能保证一定能我到要查找的关键字,故C选项不正确。顺序查找是对全部范围内的每个元案依次进行比较,而二分查我每次对一半范围内的数据进行比较,一般来说,二分查找的效率比顺序查找要高。8.答案:D[解析]进行对分查找时,被查找数据必须是有序的,降序或升序,查找数据不存在,依然需要输出结果,《新华字典》中的汉字是有序的,适合采用对分查找,对规模为n的数据进行顺序查找,最多查找n次,最少查找1次,所以平均查找次数是(n+1)/2,故选:D.9.答案:C[解析]运用二分查找法进行查找时,必须为一个有序序列,无论是升序还是降序,所以C符合题意。故选:C。10.答案:D[解析]由题知知f(x)是单调函数,意味着f(x)已按大小有序排列,根据对分查找的概念,开始搜索区间为[0,1],经过1次对分查找后,第2次的搜索长度变为1/2,经过2次对分查找后,第3次的搜索长度变为1/22...经过10次对分查找后,第11次的搜索长度变为1/210,故选D。11.答案:B[解析]根据二分查找的定义可知,第一次查找为172,第二次查找为176,第三次查找为178。故选:B。12.答案:C[解析]据题意,所有数字降序排序,对分查找时:第1次查找:将数组中的7个数字分成两半,中间位置是(1+7)/2=4,第4位是数字172,172小于查找的数字178,就在数组第4位的左边继续查找;第2次查找:在数组第1位到第3位中找,中间位置时(1+3)/2=2,第2位是数字177,177小于178,就在数组第2位的左边继续查找;第3次查找:在第1位找,第1位的数字正好等于178,查找到数字,查找结束,整个查找过程访问过的数字172,177,178;故选:C。13.答案:B[解析]数组d中的数据是有序的,可以用二分查找法进行查找,故选项A是错误的;第一次查找时,m=3,即定位到的数据是d3,故B选项是正确的。如果第一次查找时的数据恰好是要查找的数据,那么查找次数最少是1次,故选项C是错误的;第二次查找时,d3]左边是3个元素,定位到d[1,右边是4个元素,定位到d5],故选项D是错的。故选B。14.答案:B[解析]对分查找虽然效率高,但是对于有序数组而言的,分析题目,P数字是没有顺序的,既不是降序也不是升序,所以不适合采用二分查找,利用顺序查找查找两次就能找见小李,故选:B.15.答案:C[解析]本题考查顺序查找和二分查找的算法思想。数据10是数据序列中第3个元素,因此使用顺序查找时,共查找3次。使用二分查找时,依次被访问的数据为15,6,10,即二分查找的次数也为3。【链接高考】1.答案:1、10、1、4[解析]本题考查的是顺序查找与对分查找的相关知识。顺序查找从数组的一端开始,顺序扫描数组,依次将扫描到的元素和给定值Key相比较。若当前扫描到的元素与Key相等,则查找成功;若扫描结束若仍未找到,则查找失败;对分查找:是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。用顺序查找在长度为10的某个数组中找某数,最少查找1次,最多查找10次;用对分查找在长度为10的某个数组中找某数,最少查找1次,最多查找4次,因为对分查找的时间复杂度为log210,即为4。2.答案:89[解析]由于登台阶每次只能跨1级或2级,因此登上第n级台阶的情形仅与登上第n1级和第n一2级台阶有关,可以考虑建立递推关系。列表如下:级数123456……10走法1234813……89登上第1级台阶只有1种走法,即a1=1;登上第2级台阶有2种走法,即az2;登上第3级台阶有3种走法,即a:3;登上第4级台阶有5种走法,即a5。以此类推,登上各级台阶的走法依次为1,2,3,5,8,13,21,34,55,89。其中a1=89,即登上第10级台阶有89种不同走法。3.答案:24[解析]假设共1级台阶,则只有1种走法,2级,有2种走法,3级,有4种走法,4级,1+2+4=7种走法,5级,2+4+7=13种走法,6级,4+7+13=24种走法,故答案为:24。4.答案:(1)1(2)将break语句删除(3)0()[解析]该代码实现的是输出顺序查找数组中key第一次出现的位置,key=5,所以输出的结果为1;想修改为查找出key最后一次出现的位置并输出,只需要让for循环继续查找到最后一次出现的位置并输出,所以只需要删除break语句;该代码采用一重循环枚举a数组中的所有数再与key进行对比,所以时间复杂度为O(n)。5.答案:①i=m+1②j=m1③key<a[m][解析]根据题目的描述“奇数在前,偶数在后”可知:若满足key是偶数且中间项a[m]为奇数,则向后找;若满足key是奇数且中间项a[m]为偶数,则向前找;如果中间项a[m]与key同奇同偶,那么根据二分查找的思想继续查找。6.答案:(1)2,5,1(2)①ans=str(a[i])+’,’+ans②flag=2anda[i]>a[i1]③b[i1]=gd[解析]本题考查数组的应用。其中列表a用于存储输入的数据元素,列表b用于记录是否为拐点,为输入的数据元素
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 承接苗木供应合同范例
- 工程总承包招标合同范例
- 买卖按揭房合同范例
- 水泥喷浆机租赁合同范例
- 居家开荒保洁合同范例
- 铜仁职业技术学院《分析化学二》2023-2024学年第一学期期末试卷
- 桐城师范高等专科学校《环境资源法》2023-2024学年第一学期期末试卷
- 桐城师范高等专科学校《大数据处理与分布式计算》2023-2024学年第一学期期末试卷
- 人教版三年级上册数学 第三单元测量《第1课时毫米的认识》教学设计
- 通化医药健康职业学院《肿瘤生物学导论》2023-2024学年第一学期期末试卷
- 人工智能对中学教学的影响与应对策略
- 闭合导线自动计算表
- 分管学校安全、德育、后勤等业务副校长述职报告
- 笔试考试:HSK笔试(三级)真题模拟汇编(共603题)
- 全国城市一览表-excel
- 国际金融课后习题答案(吴志明第五版)第1-9章
- 《WPS演示制作与设计》计算机应用基础高职专科一等奖(含课件制作试题及答案)
- 《基于杜邦分析法周大福珠宝企业盈利能力分析报告(6400字)》
- 全国英语等级考试三级全真模拟试题二-2023修改整理
- 02R112 拱顶油罐图集
- 全国民用建筑工程技术措施暖通空调动力
评论
0/150
提交评论