• 333.07 KB
  • 2022-07-28 发布

2018浙江高中信息技术排序和查找算法复习资料总结

  • 9页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
2018年浙江省高中信息技术选考排序和查找算法复习资料一、排序算法1.选择排序(1)概念:找出数组元素中最小(大)的数据,使它与第一个元素中的数据交换位置;在余下的元素屮继续找最小(大)的元素,与第二个元素小的数据交换位置;……(2)比较的次数:n*(n-l)/2交换的次数:小于nJ趟数:n-1ddddd119115115115115230230218218218318318330319319422422422422422515519519530530(3)算法:将数组内的数据从小到人排序(4)例题:例题1:使用选择排序的方法对数据8、6、1、9、4从大到小排序,需要进行数据比较、数据互换的次数分别是(D)A、4,5B、10,2C、3,3D、10,4例题2:小陈设计了一个带密码的趣味“4+1”小游戏,小陈告诉大家,该密码可以通过以下方法破解:将一组顺序是“3、2、8、5、9”的数码,在用选择排序法将这组数码从大到小的排序过程屮,进行两次数据交换,即得。则该密码可能是(D)A、98523B、92853C、98523D、98253例题3:以下表格中的数据为2009年快乐女生十进七淘汰赛的选手信息。某同学设计了一个VisualBasic程序用于选出晋及前七名的选手信息。程序界面如下图所示,单击“十进七晋级名单”,在Iist2里显示晋及前七名的选手信息。阅读、完善以下程序,并上机验证。完成下面问题:\nDimxs(lTo10)AsStringDimdf(lTo10)AsIntegePrivateSubForm_Load()选手(xs)得分(df)黄英88江映蓉87李霄云72刘惜君77谈莉嫁61郁可唯81潘虹越48潘辰38李媛希36曾轶可51DimiAsIntegerxs(l)=”黄英“:df(l)=88xs(2)=“江映蓉“df(2)=87xs⑶「李霄云“df(3)=72xs(4)=“刘惜君“df(4)=77xs(5)=”谈莉娜“d(5)=61xs(6)=”郁可唯“df(6)=81xs(7)=“潘虹越“df(7)=48xs(8)="潘辰“:df(8)=38xs(9)=“李媛希“df(9)=36xs(10)=噌轶可“:df(10)=51Fori=1To10Listl.Addltemxs(i:+"”+Str(df(i))Listl.Addltem,u,NextiEndSubPrivateSubCommandl_Click()DimjAsInteger,kAsInteger,mAsIntegerDimtempiAsStringDimtemp2AsIntegerForj=lTo9m=jFork=j+lTolOIfQ)Thenm二kNextkIfj<>mThentempi=xs(j):②:xs(m)=tempitemp2=df(j):df(j)=df(m):df(m)=temp2EndIfNextjForj=③List2.Addltemxs(j)+""+Str(df(j))List2.Addltem,,uNextjEndSubDcommandl上单击事件处理过程中采用的算法是:选择排庁(填:冒泡排序或选择排)2)commandl±单击事件处理过程屮采用的排序方式是:升序(填升序或降序)3)程序中划线①处应填入df(k)>df(m)4)程序屮划线②处应填入xs(i)二xs(m)5)程序中划线③处应填入Ito7\n1.冒泡排序(1)概念:把待排序的n个元素的数组看成是垂直堆放的一列数据,从最下面的一个元素起,自下而上地比较相邻两个元素屮的数据,将较小的数据换到上面的一个元素中,重复这一过程,直到处理完最后两个元素中的数据,称为第一遍加工。然后对余下的n・l个元素重复上述处理过程,直至最后进行余下的两个数据的比较和交换。ddddd119115115115115230219218218218318a3031931931942241843042242251522522530530(2)算法:将数组内的数据从小到大排序(3)例题:例题1:5位学生100米短跑的成绩(单位:秒)如下表。若采用冒泡排序算法对其进行排序,则第3趟的排序结果是(A)原始数据14.213.512.613.312.8第1趟12.614.213.512.813.3第2趟12.612.814.213.513.3笫3趟第4趟12.612.813.313.514.2A、12.612.813.314.213.5B、12.612.813.313.514.2C、12.612.814.213.513.3D、12.612.813.514.213.3\n例题2:下表记录了6个数据排序的过程。分析表中数据可知,该排序采用的算法与排序方式分别为(C)A、冒泡排序、降序C、冒泡排序、升序B、选择排序、降序D、选择排序、升序原始数据655759444569第1遍446557594569第2遍444565575969第3遍444557655969例题3:随机产生10个两位正整数,并对它们进行排序。用VB编写的程序运行界面如下图所示,请阅读并完善程序段,并上机验证。Dimd(lto10)asinteger,定义一4"一维数组d,用于存放10个正整数DimiAsIntegerAsIntegerDimjAsInteger,tempAsIntegerPrivateSubCommandl_Click(),随机产生10个两位正整数Randomize'随机数初始化Listl.Clear'原始数据清空Fori=1To10d(i)二int(Rnd*90)+10Listl.AddltemStr(d(i))'将数据显示到原始数据列表中NextEndSubPrivateSubCommand2_Click()'对10个两位正整数进行排序List2.Clear'将排序后的列表数据清空Fori=1To9Forj=10toi+1step-1Ifd(j)>d(i-l)Thentemp二d(i):d(i)二d(卜l):d(j-l)二tempEndIfNextjNextiFori=1To10List2.AddltemStr(d(i))*在列表2中显示排序后的数据Nexti\nEndSub\n1.选择排序和冒泡排序对比:若数组d里有n个待排序的数据,分别用冒泡法和选择法对此进行排序,试填充下表中的数据。排序方法趟数方向核心操作比较次数交换次数冒泡n~l自下而上数据比较数据交换n*(n-1)/2<=n*(n-1)/2选择n~l自上而下找数据数据交换n*(n-1)/2<=n-l二、查找算法1.顺序查找(1)概念:从数组的第一个数据开始,逐个将数据与给定的值进行比较。若某个数据和给定的值相等,则查找成功,输出所查数据的位置;反之,查找不成功,输出“数据不存在于此数组屮”key3265i=1i=2i=3i=4i=5匸6,找到key3299d13206i=12130i=233217i-342526i=452589"—i=563265—i=674832i=787052i=8♦——未找到\n(2)算法:顺序查找的程序实现key在规模为n的数组变量d中査找某一数据(假设要査找的数据存储在变量key中)d132062130Fori=1ton3321742526Ifd(i)=keythen52589Print住找到了"位置在”,I63265Exitsub74832endif87052NextiPrint"找不到”1.对分查找(1)概念:前提:数组屮被查找的数据必须是有序的基本思想:首先将查找的数据与有序数组内处于中间位置的数据进行比较,如果两者相等,则查找成功;否则根据数组元素的有序性,就可确定该数据应该在数组的前半部分还是后半部分继续进行查找。在新确定的范围内,继续按上述方法进行查找,直到获得最终结果。(2)算法:对分查找过程:d-—i=l我们用变最i和j记录110215所要査找范围的起始317和终止位置示此418范圉内的中冋位置522627735Key845■m=fix((i+j)/2)=8948521052116512671372148515971698-—j=16\ndd110110215215317317418418522522627627735735845845948<—i=9948<—i=910521052*—m-fix((i+j)/2)-1011651165—j=ll1267♦m=fix((i+i)/2)=1212671372AllXIA■1J!—)人~137214851485159716971698*—j=161698\n在规模为n的数组变量d(按增序存储)中查找某一数据(假设要査找的数据存储在变量key中)对分查找的程序实现Dowhilei<=jm=fix((l+j)/2)ifd(m)=keythenPrint-找到了,位置在”,mExitsubelselfkey