您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文档 > C语言-二分法及其应用举例
《C语言程序设计》二分法及其应用举例夏银2018.11.14情境导课概念生成1情境导课概念生成一位商人有8枚金币,其中有1枚假金币(质量略轻),你能用天平(不用砝码)将假金币找出来吗?情境导课概念生成需要称几次,能找出假金币?八枚金币中有一枚略轻情境导课概念生成情境导课概念生成我在这里情境导课概念生成情境导课概念生成情境导课概念生成我在这里情境导课概念生成情境导课概念生成哦,找到了啊!情境导课概念生成二分法的定义对处理对象(数据或者具体的物)不断取中间点,将范围一分为二,再经比较,按需要留下其中一个小范围,如此往复,逐步逼近目标的方法叫二分法,也叫对分法。情境导课概念生成应用举例算法探究2应用举例算法探究1.采用二分法在给定的有序数组{0,2,3,5,6,8,9,10,11,15}中查找用户输入的值,并显示查找结果。请填写适当的符号或语句,使程序实现其功能。如输入11输出为:找到位置为8如输入2输出为:找到位置为1如输入4输出为:4未找到0235689101511lowhighmidK=110123456789算法探究数组a[10]应用举例算法探究算法探究035689101115数组a[10]2lowhighmidK=20123456789应用举例算法探究算法探究0235689101115数组a[10]lowhighmidK=40123456789应用举例算法探究先假设最小的数组下标low的值是0最大的数组下标high值为9取中点,得中间的数组下标mid值为(0+9)/2当low=high时比较a[mid]和要找的值k是否相等,如果相等,即输出下标、做标记、程序结束如果a[mid]k将最大数组下标high的值改为mid-1重新计算mid的值否则将最小数组下标low的值改为mid+1重新计算mid的值语言描述low=0;high=9;mid=(low+high)/2;while(low=high){if(a[mid]==k){…;find=1;break;}if(a[mid]k)high=mid-1;elselow=mid+1;mid=(low+high)/2;}C语句low=0;high=9;mid=(low+high)/2low=highif(a[mid]==k){…;find=1;break;}if(a[mid]k)high=mid-1;elselow=mid+1;mid=(low+high)/2;流程图应用举例算法探究程序实现main(){inta[10]={0,1,2,3,4,5,6,7,8,9};intlow=0,high=9,mid,k,find=0;mid=(low+high)/2;printf(请输入欲查找的值:\n);scanf(%d,&k);while(low=high){if(a[mid]==k){printf(找到位置为:%d\n,mid+1);find=1;break;}if(a[mid]k)high=mid-1;elselow=mid+1;mid=(low+high)/2;}if(find==0)printf(%d未找到\n,k);}应用举例算法探究程序练习知识内化32.用二分法在1到2的范围内求方程2^x+3*x-7=0的根。(精确度为1e-5)算法探究程序练习知识内化x0123456f(x)-6-2310214075函数f(x)=2^x+3x-7对应的函数值表:两个问题:(1)你能找到这个函数的零点所在的某个区间吗?(2)能否找到什么方法一步一步缩小这个区间,使区间端点越来越逼近函数的零点,进而求得方程的根(函数f(x)零点)的近似值?2345-1-212yx01-3-4-5-6-7732)(xxfx程序练习知识内化11.21.41.8-1-20.51yx0-3-4-5-6-71.621.5732)(xxfx程序练习知识内化1-1-20.51yx0-3-4-5-6-721.51.25732)(xxfx程序练习知识内化11.375-1-20.51yx0-3-4-5-6-721.51.25732)(xxfx程序练习知识内化11.375-1-20.51yx0-3-4-5-6-721.51.4375所以方程2^x+3*x-7=0的根近似解可以取1.433189732)(xxfx程序练习知识内化程序实现#includestdio.h#includemath.hmain(){floatx0,x1,x2,fx0,fx1,fx2;x1=1.0;x2=2.0;fx1=pow(2,x1)+3*x1-7;fx2=pow(2,x2)+3*x2-7;x0=(x1+x2)/2;fx0=pow(2,x0)+3*x0-7;while(fabs(fx0)=1e-5){if(fx0*fx10)x1=x0;elsex2=x0;x0=(x1+x2)/2;fx0=pow(2,x0)+3*x0-7;}printf(therootis%6.2f\n,x0);}程序练习知识内化归纳小结课堂延伸4归纳小结课堂延伸1.二分法的实质:3.二分法的应用:通过缩小范围来靠近目标。2.二分法的方法:不断取中点,达到缩小范围的目的。辨真伪、找数据、解方程、猜价格、修电路等,做到了在较的时间内用最小的精力去解决问题。修电路、水管、气管某个雷电交加的夜晚,医院的医生正在抢救一个危重病人,忽然电停了。据了解原因是供电站到医院的某处线路出现了故障,维修工,如何迅速查出故障所在?(线路长10km,每50m一根电线杆)归纳小结课堂延伸归纳小结课堂延伸作业:观看视频,编写一个猜数字的小游戏,同学之间分小组猜数字,看谁能用最少的次数猜对?
本文标题:C语言-二分法及其应用举例
链接地址:https://www.777doc.com/doc-5408764 .html