- 157.00 KB
- 2022-08-13 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
算法的程序实现——数组、查找信息技术组\n目标导学理解数组概念,学会用数组处理数据;掌握顺序查找和二分查找算法,会编写相应的程序;\n数组☆引入:定义某个同学五门功课的成绩,可用五个变量yw,sx,yy,wl,hx。若定义全班学生的成绩,采用此种单个变量定义的方法,需要定义很多变量………可以利用变量的集合——数组来处理。繁琐\n数组数组不是一种基本数据类型,而是一组相同类型的变量的集合,集合中的每个元素都是独立的变量,能够通过数组的序号被引用。◆定义格式:Dim数组名(常量)As数据类型例:Dimyw(79)AsSingle其中包含80个变量:yw(0),yw(1),yw(2),……yw(79)◆赋值及其他操作:(一般要用到循环语句)求和:Sum=0Fori=0to79sum=sum+yw(i)Nexti输入:Fori=0to79Yw(i)=val(inputbox(“语文成绩:”))Nexti\n☆实例:(读右面的程序1,回答问题)若输入78,98,100,87,89,67,88,90,96,80,得到的输出结果是:___________________该程序的功能是:—————————————PrivateSubCommand1_Click()Dimyw(9)AsInteger,avgAsSingle,iAsIntegerFori=0To9yw(i)=Val(InputBox("输入语文成绩:",0))Nextiavg=0Fori=0To9avg=avg+yw(i)Nextiavg=avg/10Print"平均成绩为:";avgEndSub平均成绩为:87.3输入10个学生的语文成绩,求平均分\n自主探究:读程序2,回答问题:若输入100,得到的输出结果是:__________________若输入60,得到的输出结果是:__________________该程序段实现的功能是:_________________,实现这一功能的方法是:_________________。PrivateSubCommand1_Click()Dimyw,cjAsInteger,iAsIntegeryw=Array(78,98,100,87,89,67,88,90,96,80)cj=Val(InputBox("输入要查找的语文成绩:"))Fori=0To9Ifyw(i)=cjThenPrint"第";i+1;"个学生的成绩是";cjExitForEndIfNextIIfi=10ThenPrint"未找到成绩为";cj;"的学生"EndIfEndSub顺序查找法第3个学生的成绩是100未找到成绩为60的学生查找某一成绩的学生从前到后逐一比较\n顺序查找从数据的第一个元素开始,按照数据的顺序查找指定的关键值,如果被查找的某个数据元素和关键值匹配,查找成功;若所有数据元素均不与之匹配,查找失败。(78,98,100,87,89,67,88,90,96,80)上例中若查找成功,则平均查找长度(比较次数)为___思考:有没有更好的查找方法?(如果数组是有序的)5.5(1+2+3+……+10)/10\n做猜数游戏\n(67,78,80,87,88,89,90,96,98,100)分析:可以从中间开始查找,若小了从右侧的中间查找,或大了从左侧的中间开始查找。如图查找89:A0A1A2A3A4A5A6A7A8A9677880878889909698100↑Low1↑M1↑High1High2↑↑M2↑↑low2low3M3↑↑↑high3二分查找(78,98,100,87,89,67,88,90,96,80)\n◆设置上界和下界,取中间元素与关键值对比,若相符,查找成功;若不相符,判断关键值落在左半部还是右半部,重新确定上界和下界,进行第二次查找,直到查找成功,或下界大于上界(查找失败)。思考:上一问题中,“二分查找”查找成功的平均查找长度为_________A0A1A2A3A4A5A6A7A8A9677880878889909698100二分查找1224333344(1*1+2*2+3*4+4*3)/10=2.9\n实践一:二分查找PrivateSubCommand1_Click()Dimyw,jAsIntegerDimlowAsInteger,highAsIntegerDimmAsIntegeryw=Array(67,78,80,87,88,89,90,96,98,100)cj=Val(InputBox("输入要查找的语文成绩:"))low=0high=9DoUntillow>highm=(low+high)\2Ifyw(m)=cjThenPrint"第";m+1;"个学生的成绩是";cjExitDoElseIfcjhighThenPrint"未找到成绩为";cj;"的学生"EndIfEndSub\n实践二:猜数游戏DimkeyAsInteger,mAsIntegerDimlowAsInteger,highAsIntegerPrivateSubCommand1_Click()'开始low=Val(Text1.Text)high=Val(Text2.Text)m=(low+high)\2Label3.Caption=Str(m)EndSubPrivateSubCommand2_Click()'小了low=m+1m=(low+high)\2Label3.Caption=Str(m)EndSubPrivateSubCommand3_Click()'正确Label3.Caption="正确的数字是:"&Str(m)EndSubPrivateSubCommand4_Click()'大了high=m-1m=(low+high)\2Label3.Caption=Str(m)EndSub