


单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,photoshop图形图像处理6.4 查找电子教案 中职 高教版 c语言程序设计基础,利用顺序查找方法查找数据,利用二分查找方法查找数据,能够分清顺序法和二分法的工作方法及优缺点,能力目标:,任务一 用顺序查找法定位指定的数,#includestdio.h,#define SIZE 10,main(),int aSIZE=79,82,55,60,65,93,81,90,58,67,int i,x;,printf(,请输入,x,的值:,);,scanf(%d,for(i=0;iSIZE;i+),if(ai=x),break;,if(iSIZE),printf(找到%d,位于数组第%d个元素位置n,x,i);,else,printf(没有找到%dn,x);,任务一 用顺序查找法在一组数中定位指定的数,分析以下运行结果请输入x的值:90,(找到90,位于数组第8个元素位置),请输入x的值:56,(没有找到56),任务一 用顺序查找法在一组数中定位指定的数,知识盘点:,顺序查找是一种最简单的查找方法,它的思路是:,从第一个元素开始,逐个把元素的关键字值和给定值比较,若某个元素的关键字值和给定值相等,则查找成功;否则,若直至第n个数据都不相等,说明不存在满足条件的数据元素,查找失败。
顺序查找的优点:算法简单,且对数据的排列无任何要求顺序查找的,缺点:查找效率低,当i较大时,不宜采用顺序查找任务二 用二分查找法定位指定的数,#include,#define N 15,main(),int i,j,number,top,bott,min,loca,an,flag;,char c;,printf(按从大到小的顺序输入15个数n);,scanf(%d,i=1;,while(iai-1),i+;,else,printf(请重新输入一个数:);,printf(必须大于%dn,ai-1);,printf(n);,for(i=0;iN;i+),printf(%4d,ai);,printf(n);,flag=1;接下页,任务二 用二分查找法在一组数中定位指定的数,while(flag),printf(,请输入查找的数据:,);,scanf(%d,loca=0;,top=0;,bott=N-1;,if(numberaN-1),loca=-1;,while(loca=0)&(top=bott),min=(bott+top)/2;,if(number=amin),loca=min;,printf(“%d位于表中第%d个数 接下页,任务二 用二分查找法在一组数中定位指定的数,任务二 用二分查找法在一组数中定位指定的数,n,number,loca+1);,else if(numberamin),bott=min-1;,else,top=min+1;,if(loca=0|loca=-1),printf(%d不在表中。
n,number);,printf(是否继续查找?Y/N!n);,c=getchar();,if(c=n|c=N),flag=0;,分析以下运行结果:,按从小到大的顺序输入,15,个数,1 3 4 5 6 8,12 23 34 44 45 56,57 58 68,请输入查找数据:56,(56位于表中第12个数),请输入查找数据:59,(59不在表中),任务二 用二分查找法在一组数中定位指定的数,知识盘点:,查找方法:设三个位置指针top、bott、midbott指向查找范围的底部,top指向查找范围的顶部,mid=(top+bott)/2指向查找范围的中间位置假设待查找的数放在x中,数列放在a数组中,接着要进行三种判断:,判断x是否等于a(mid),如果等于,则已找到,查找不必再进行下去,否则进行后面的判断判断x是否小于a(mid),如果小于,则x必定落在top和mid-1的范围之内,下一步查找只须在这个范围内进行而不必去查找mid以后的元素所以可以确定新的查找范围为top(原来位置不动),bott=mid-1;如果x不小于a(mid),就再进行下一个判断判断x是否小于a(mid)当然在判断了x不小于等于a(mid)之后,必然就是大于a(mid)了。
这时x必定落在mid+1和bott的范围之内,下一步的查找应该在此范围内进行,所以新的查找范围为top=mid+1和bott(原来位置不动)在确定了新的查找范围后,重复进行以上比较;在两种条件下不再重复进行而退出循环:一是已找到,则可退出循环;二是没有找到,以至于使bott变得小于top,这时也应该退出循环知识盘点:,“折半”是指先将给定值和所查区间中间位置的记录的关键字进行比较,若相等,则查找成功,否则,依给定值大于或小于该关键字继续在后半个区间或前半个区间中进行查找其原理是:先确定待查元素的范围,将其分为两半,然后测试位于中间点元素的值如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前前提是此数组为升序排列),二分查找法又称为折半查找法,这是一种效率较高的查找方法但是采用二分查找法应用在一组有一定规律的数据,对于杂乱无章的一组数据则应采用顺序法知识盘点:,。