资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,3,6,顺序查找算法及程序实现,1,查找,查找是一种查询数据的技术,其目标是能以比较少的步骤或较短时间内找到所需的对象。程序将按照查找的结果,(,找到或未找到,),来决定接着应执行的步骤。查找的方法很多,对不同的数据结构有不同的查找方法。参加选考的同学,只需要掌握顺序查找和对分查找两种方法。,2,顺序查找算法,顺序查找的基本思想是从第一个数据开始,按顺序逐个将数据与给定的数据,(,查找键,),进行比较,若某个数据和查找键相等,则查找成功,输出所查数据的位置;反之,输出未找到。,36 顺序查找算法及程序实现1查找,顺序查找算法的处理过程,假定在数组,d,中有,n,个数据,查找键已经存储在变量,key,中。其处理过程是:从数组,d,的第,1,个元素,d(1),开始,依次判断各元素的值是否与查找键,key,相等,若某个数组元素,d(i),的值等于,key,,则结束处理,(,找到了指定的数据,),;若找遍了所有的,n,个元素,无任何元素的值等于,key,,则结束处理,(,输出未找到信息,),。,顺序查找算法的处理过程,顺序查找算法流程图,顺序查找算法流程图,3,顺序查找算法的程序结构,程序实现代码:,k,0,For i,1 To n,If a(i),key Then k,i,Next i,If k0 Then,输出查找成功,Else,输出查找不成功,End If,3顺序查找算法的程序结构程序实现代码:,本节的学习要求掌握顺序查找算法的基本思想,能用程序来实现顺序查找的算法。考查方式为选择题与填空题。,本节的学习要求掌握顺序查找算法的基本思想,能用程序来实现顺序,1,为找自己第一次上幼儿园时的照片,小张同学依次翻开自己的多本相册来逐张查找。这种查找方法为,(,),A,无序查找,B,顺序查找,C,对分查找,D,随机查找,B,1为找自己第一次上幼儿园时的照片,小张同学依次翻开自己的多,2,由,10,个数组成的数列:,25,、,36,、,45,、,87,、,96,、,84,、,71,、,65,、,99,、,27,,从中查找数据,36,时,最适合的查找方式是,(,),A,随机查找,B,顺序查找,C,对分查找,D,模糊查找,B,2由10个数组成的数列:25、36、45、87、96、84,3,英文字典中的单词是按字母,ASCII,从小到大排列的,习惯上将这种排法叫做字典排列。要在字典中快速查找某一个单词,(,如,Best),的解释,下列最适合的查找方法是,(,),A,顺序查找,B,对分查找,C,倒序查找,D,随机查找,B,3英文字典中的单词是按字母ASCII从小到大排列的,习惯上,4,某数组有,7,个元素,依次分别是,11,、,25,、,37,、,48,、,56,、,62,、,69,,若采用顺序查找法在该数组中查找数据,25,,需要查找的次数是,(,),A,1 B,2 C,3 D,4,B,4某数组有7个元素,依次分别是11、25、37、48、56,5,在数组,23,、,41,、,54,、,26,、,84,、,52,、,65,、,21,中查找数字,52,,采用从后往前顺序查找,需要查找的次数是,(,),A,2,次,B,3,次,C,7,次,D,1,次,B,5在数组23、41、54、26、84、52、65、21中查,某校在进行新生录取工作时,建立了一个数据库,共有,650,位新生,(,没有重名,),的记录,现需要找出某个学生是否已经报名参加该校的暑期军训。,Private Sub Command1_Click(),Dim search As Integer,Stu As String,search,0,Stu,Text1.Text,For i,1 To 650,If Stu,a(i)Then,_,Exit For,End If,Next i,If search 0 Then,MsgBox,“,找到该学生,在数组位置:,”,Str(search),Else,mxgbox“,找不到该学生,”,End If,End Sub,已知在一个事件过程中已经完成,650,个学生的数据录入,学生姓名信息存放在数组,a(1 to 650),中,,Command1_Click,事件过程完成了在对象,Text1,中输入学生姓名后,在,Label1,中输出查找结果。程序中画线部分应填入,_,,该程序主要采用了,_,算法。,Search=i,顺序查找,某校在进行新生录取工作时,建立了一个数据库,共有650位新生,7,现在的学业水平考试都进行网上报名,小李设计了一个模拟查询的程序,实现查询某位考生已经报考的科目信息。设数组,zkh,用来存放学生的报名序号,数组,name,和,bmk,分别存储对应考生的姓名和已报考科目信息。程序运行界面如下图所示:,7现在的学业水平考试都进行网上报名,小李设计了一个模拟查询,输入报名序号与考生姓名,若报名序号存在且考生姓名输入正确,则显示考生已报考科目信息。,部分代码如下所示:,Private Sub Command1_Click(),Dim i As Integer,s As Integer,Dim z As String,n As String,k As String,z,Text1.Text,n,Text2.Text,For i,1 To n,If,Name(i)Then,s,i,Exit For,End If,Next i,If s 0 Then,Label3.Caption,“,该考生已报考的科目是:,”,Else,msgbox“,找不到该考生,”,End If,End Sub,Private Sub Form_Load(),考生报名序号、姓名和报考科目数组赋值部分,忽略,End Sub,(1),该程序采用的算法是,_,。,请将划线处的语句或表达式填充完整。,(2),划线处应填入,_,。,(3),划线处应填入,_,。,顺序查找算法,bmk(s),z=zkh(i)And n,输入报名序号与考生姓名,若报名序号存在且考生姓名输入正确,则,8,要求从某一字符串中删除指定的字符,(,假设所含的英文字母均为小写字母,),,并将处理后的字符串重新输出。,程序界面如图所示,在文本框,Text_1,中输入原始字符串,在文本框,Text_2,中输入需要删除的字符,单击“删除此字符”按钮,(Command1),后,在文本框,Text_3,中输出处理后的结果。,8要求从某一字符串中删除指定的字符(假设所含的英文字母均为,注:该示例程序在素材文件夹下,vb31,文件中。,解决此问题的算法流程图如图所示,相应的,Visual Basic,程序如下:,注:该示例程序在素材文件夹下vb31文件中。解决此问题的算法,Dim p As String,k As String,Private Sub Command1_Click(),Dim s As Integer,result As String,flag As Boolean,result,“”,p,Text_1.Text,k,Text_2.Text,For s,1 To Len(p),flag,f(s),If Not flag Then,result,result,End If,Next s,End Sub,Function f(s As Integer)As Boolean,If Mid(p,s,1),k Then f,True,End Function,(1),解决此问题的算法是,_,(,选填:顺序查找或对分查找,),在程序和划线处,填入适当的语句或表达式,把程序补充完整。,(2),程序中划线处应填入,_,。,(3),程序中划线处应填入,_,。,顺序查找,Mid(p,s,1),Text_3.Text=result,Dim p As String,k As String(1,9,普源为晚上的班级联欢会设计了一个抽奖程序,将所有同学的编号和对应的姓名分别保存在数组,a(,全班共,50,个同学,编号为,1,到,50),和数组,b,中,程序会随机产生一个,1,到,50,的正整数,(,同时包括,1,和,50),,作为中奖编号。,程序界面如图所示,左边列表框,List1,中显示同学的编号和姓名,单击“抽奖”按钮,(Command1),,在标签,Label3,中显示抽中的编号,同时在标签,Label4,中显示“恭喜*同学”,其中具体同学的姓名从数组,b,中获取。,9普源为晚上的班级联欢会设计了一个抽奖程序,将所有同学的编,解决此问题的程序段如下:,Dim a(1 To 50)As Integer,Dim b(1 To 50)As String,Function search(m As Integer)As Integer,search,0,For i,1 To 50,If m,a(i)Then,search,a(i),End If,Next i,End Function,Private Sub Command1_Click(),Dim c As Integer,t as Integer,Randomize,Label3.Caption,Str(c),t,search(c),If t 0 Then,Label4.Caption,“,恭喜,”,“,同学,”,End If,End Sub,Private Sub Form_Load(),此过程用于对数组,a,和数组,b,进行初始赋值,代码略,End Sub,(1),函数,search,中所用的算法是,_,。,在程序和划线处,填入适当的语句或表达式,把程序补充完整:,(2),程序中划线处应填入,_,。,(3),程序中划线处应填入,_,。,顺序查找算法,c=Int(Rnd()*50+1),b(c),解决此问题的程序段如下:(1)函数search中所用的算法,学校的每个学生卡卡号都是唯一的,卡内记录学生的个人信息。下列程序的功能是:在文本框,Text1,中输入捡到的学生卡卡号,单击“查找”按钮,Command1,,查找失主的信息,并在标签,Label3,中显示。部分,VB,程序代码如下所示:,学校的每个学生卡卡号都是唯一的,卡内记录学生的个人信息。下列,定义存放卡号的数组,a,,存放学生卡卡号,定义存放学生信息的数组,b,,存放学生个人信息,Private Sub Command1_Click(),Const n,1000,Dim i As Integer,f As Integer,Dim x As String,s As String,x,f,0,For i,1 To n,If,Then,f,i,Exit For,End If,Next i,If,Then,Label3.Caption,“,该学生是,”,Str(b(i),Else,Label3.Caption,“,没有该卡号,”,End If,End Sub,在程序划线处,填入适当的语句或表达式,把程序补充完整:,(1),程序中划线处应填入,_,。,(2),程序中划线处应填入,_,。,(3),程序中划线处应填入,_,。,Val(Text1.text),x=a(i),f0,定义存放卡号的数组a,存放学生卡卡号在程序划线处,填,
展开阅读全文