C语言-二分法及其应用举例_第1页
C语言-二分法及其应用举例_第2页
C语言-二分法及其应用举例_第3页
C语言-二分法及其应用举例_第4页
C语言-二分法及其应用举例_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

《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;else

low=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-7程序练习知识内化11.21.41.8-1-20.51yx0-3-4-5-6-71.621.5程序练习知识内化1-1-20.51yx0-3-4-5-6-721.51.25程序练习知识内化11.375-1-20.51yx0-3-4-5-6-721.51.25程序练习知识内化11.375-1-20.51yx0-3-4-5-6-721.51.4375所以方程2^x+3*x-7=0的根近似解可以取1.433189程序练习知识内化程序实现#include<stdio.h>#include<math.h>main(){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*fx1>0)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.二分法的方法:不断取中点,达到缩小范围的目的。辨真伪、找数据、解方程、猜价格、修电路等,做到了在较的时间内用最小的精力去解决问题。

修电路、水管、气管

某个雷电交加的夜晚,医院

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论