《查找算法的应用-教学设计(表格式).docx》由会员分享,可在线阅读,更多相关《查找算法的应用-教学设计(表格式).docx(9页珍藏版)》请在优知文库上搜索。
1、教学设计课程基本信息课鹿5.4数据查找杳找算法的应用教学目标1 .通过查找应用回顾,引导学生能对给定的文件中的数据进行抽象并建立模型,2 .引导学生能合理选用数据结构,设计查找算法。3 .引导学生能用Python语言编写具体的查找程序.1.引导学生能自觉对学习生活具体问题抽象建模、设计算法并编写程序及调试程序。指向的核心索养信息意识:学生能坡结合实例对给定的文件中的数据进行抽并建立模型,在意识地选择恰芍的数据结构表达数据比$3计算思维:能峥从数据结构的视角审视基于数组、鞋表的程序.解择程序中数据的组织形式.描述数据的龙辑结构及其操作,评判其中数据结构运用的合理性;能够针对限定条件的实际问造进行
2、数据抽象,运用数据结构合理组织、存储数据,选择合适的算法(查找、迭代等)端程实现、解决问遨.数字化学习与创新:要使学生较为熟练地运用/找解决生活中的揖实间璃,并在此过程中自主或协作探究:能够评估常见的数字化资源与工具对学习数据结构的价值,根据需要合理选择佶息社会责任:能终分析数据与社会各腕域间的关系,自觉遵守相应的伦理道德和法律法规.教学内容教学里点:1 .:分查找的算法思想。2 .能熟练川自然谱言、流程图与Python语言来描述查找排序.教学碓点:Pyth011语言描述变式二分查找。教学过程一、情景引入平时在Excel查找信息,并体验Vip号码的excel查找二、航空公司YlP会员积分查询部
3、分数据(Excel数据(一)抽象与建模间密:从表中的数据可以看出,每个会员的信息是一条记录,包括VIP号、姓名、K行里程、积分等数据项。实践体验:Excel表格中,刻记录快速查询公用积分,查找应当如何进行?(二)设计算法与数据结构数据组织形式仃两种:方法一是采用4个一维数组按列存储,即每个数组分别存储每个用户的Vlp号、姓名、飞行里程(KY)、积分等,如定义a数组存储表中每个用户的VlP号,其对应的值为“600214,”601278J600815,607854,“605719:定义b数组存储表中姓名:定义C数组存储表中飞行里程(KM:定义d数组存储表中枳分信息。方法二是采用1个维数组按行存储,
4、每个数组元素对应某个国家的条记录信息,如al为600214,韩江辉,16801,519对应第一条记录的相关信息。数据查找算法有两种:杳找可采用顺序杳找算法或二分杳找算法,对数据进行一次查找,采用顺序查找算法。对数据田更查找,二分查找算法的效率高丁领序查找算法,但二分查找提前:被有找的数据序列必须是有序,即在查找VlP号前要按YlP号为关键字进行排序。(三)编写程序并调试亚法一:顺序直找程序1:#数据读入importcsv#导入CSY模块csvl7ile=open(*vip.csv*,r)#打开vip.csv数据文件reader=csv.reader(csvFilc)#建立,个读入数据的对象re
5、adera=4定义空列表aforiteminreader:3每一行为a列表一个元素a.append(item)HCSV通过这种样式读入的数据为字符串csvljile.close()#关闭vip.csy数据文件foriinrange(Ien(八)):输出YIP表信息print(ai)key=inpul请输入要查询的VIP号:)#输入要杳询的VIP号:key为字符串中顺序查找f=False#设置没查找标记foriinranged,Ien(八)):#查询范围不包含第一行数据ifaiO=kcy:#逐比较m=i#记录找到了的位置f=True#标记查找成功break总结束查找iff=True:#标记查找成
6、功,输出信息Print(aml先生/女士,您的枳分为:”,am3)else:能查找不成功,输出信息Print(找不到VIP号对应的用户信息!,)程序2:井数据读入importcsv#导入CSY模块csvFile-open(,vip.csv,r)#打开vip.csv数据文件reader-csv.reader(csvFile)#建立一个读入数据的对象readera=#定义空列表aforiteminreader:#每,行为a列表,个元素,,此元素为字符串a.append(item)WCSV通过这种样式读入的数据为字符串csvFile.close()#关闭vip.csv数据文件foriinrange(
7、Ien(八)):#输出YIP表信息print(ai)key=input(请输入要查询的VlP号:)#输入要查询的VlP号:key为字符才顺序查找defSeq_SCarCh(a,key):globalm#定义全局变量mf=False4设置没查找标记foriinranged,Ien(八)):#查询范围不包含第一行数据ifai0=key:#逐一比较f=Truc#标记查找成功m=i#记录找到了的位置break*结束查找returnf*返回ff=seqsearch(a,key)iff-True:#标记查找成功,输出信息Print(aml,先生/女士,您的积分为:”,am3)else:#杳找不成功,输出信
8、息printC找不到VIP号对应的用户信息!)观看运行程序修法二:二分查找程序1:importcsv#导入csv模块#数据读入csvFiIe=open(*vip.csv*,r)#打开vip.csv数据文件reader-csv.reader(csvFile)并建立一个读入数据的对象readera=*定义空列表aforiteminreader:#每一行为U列表一个元素,此元素为字符串a.append(item)#csv通过这种样式读入的数据为字符串csvlile.close()#关闭vip.csv数据文件并冒泡排序foriinranged,len(八)):forjinranged,Ien(八)-i
9、):ifint(aj0)int(aj+l0):力升序排序aj,aj+l=aj+l,ajPrint(排序后:)foriinrange(Ien(八))输出排序后的VIP表信息print(ai)key=int(inputC请输入要查询的VIP号:)#二分查找i=1才查找范围不包含第一行数据,左端点初值1j=len(八)-l,右端点初值为最后个元素索引值f=Ealse#设置含找标记BhiIei=j:m=(i+j)/2#确定中点ifint(am0)=key:#key与中点VIP号相等f=Truc#标记查找成功breakW结束查找ifkeyint(am1.0):#keyint(d+l0):#升序排序dj,
10、dj+l=dj+l,dj#二分隹找函数defbsearch(s,array):i=1#查找范围不包含第一行数据,左端点初值1j=lcn(aay)T*右端点初值为最后一个元素索用值f=False#设置查找标记whilei=j:m=(i+j)/2#确定中点ifint(arraym0)=s:#key与中点VIP号相等returnin年找到就结束查找,返I可中点mifsint(array110):#key中点VIP号i=m+1#到右边区间找return-1#未找到返回T#主程序bubblesort(八)#调用冒泡排序print(排序后:)foriinrangc(len(八)):#输出排序后的VlP表信
11、息print(ai)key=int(input(请输入要查询的VlP号:)m-bsearch(key,a)调用二分查找函数ifm!=T:#标记查找成功,输出信息PrinI(aml,先生/女士,您的积分为:,am3)else:#未找到prim(找不到VIP号对应的用户信息!)观看运行程序三、学习生活中的应用实践:校园一卡通号码查询。某校共n名学生,严老师编写了一个校园一卡通号码杳询程序,输入号码就能查询该号码所属的班级和学生姓名。如右图所示所有学生数据存储在“校园一卡通.csv”表格中,该表格分别保存J本校所有学生的号码、所在班级和姓名的信息,号码的编码规则为入学年份+班级加身份证号后三位。第i
12、个学生的号码保存在第1列中,对应的班级和姓名保存在第2列和第3列中。输入号码,电脑开始杳找该号码的信息,如果找到对应的信息,就显示所属班级和姓名,如果没有找到,则显示“没有查询到该号码信息!”2IMOITa三o31905326嘉三0541912312K三125i9i06191T12911T7191r21*189i9O5145059191823/三16101906166寓三0611191Z7151121219O3O3X三03131915717115WX91S19/三1615i9BI2Tl3162015220盒二151719040231=0418191512TX10191906125嘉三Xvi9WGloe21191512215221912128第三12231908UT1O8姓名丁万C丁少植善TfHITWH丁洛7JTSKTtCTWMTMK丁字H2M马千仓马乐办马东日马字呢苗8”马秋(以填空形式说明)相应程序如下,请在程序划纹处填入相应的代码,把程序补充完整.importcsvfliel=open(S卡通.csv,r)reade=csv.reader(fliel)st=foritinreader:fliel.close()#目泡排序foriinranged,Ien(st)-1):forjinrange(len(st)-l,i,-1):if:stj,slj-l=stj-l,stjfori