内容正文:
第三单元 查找算法
信息技术
考点与典例
考点1
顺序查找
1.查找算法
所谓查找就是在指定的数据中寻找某一特定的数据。
查找结果有两种:找到(查找成功)和未找到(查找失败)。
2.顺序查找的基本思想
从第一个数据开始,从左往右(或从上到下)将数据按顺序逐个与给定的关键字进行比较,若某个数据和给定的关键字相等,则查找成功,找到并输出第一个与关键字相等的数据的位置;反之,查找失败。若有n个数,则可能的最多查找次数为n。
信息技术
3.顺序查找算法基本框架
假设:要查找的数为key,待查找的数存放在数组d中。
For语句框架:
For i=1 To n
若d(i)=key,则表示找到,做相应处理
Next i
若i>n表示未找到
Do While语句框架:
i=1
Do While i<=n
若d(i)=key,则表示找到,做相应处理
i=i+1
Loop
若i>n表示未找到
信息技术
4.顺序查找的程序实现
在n个数组元素中依次查找,找到第1个满足条件的值,查找即结束,输出找到元素所在的位置;若找不到,输出“未找到”。
程序实现:
设:(1)要查找的数据是key(在文本框Text1中输入),查找的数据存放在数组d中。
(2)pos为找到数的位置,pos=0表示未找到。
信息技术
(3)p记录查找的次数。
key=Val(Text1.Text) ′Val要根据实际情况决定是否要添加
p=0
pos=0
find=False ′find=False表示未找到,find=True表示找到
i=1
Do While i<=n And find=False ′表示还没找完并且还未找到,则继续查找,not find也可表示为find=False
p=p+1
If key=d(i) Then
信息技术
pos=i
find=True
End If
i=i+1
Loop
If find Then ′也可表示为If find=True Then
Text2.Text="在d("+Str(pos)+")中"
Else
Text2.Text="未找到"
End If
信息技术
典例一 某查找算法的部分VB代码如下:
flag=True
Key=Val(Text1.Text)
i=1
Do While i<=8 And flag
If a(i)=Key Then
flag=False
Else
i=i+1
信息技术
End If
Loop
If Not flag Then
Label1.Caption="Find!"+str(i)
Else
Label1.Caption="Fail!"+str(i)
End If
数组元素a(1)到a(8)的数据依次为“11,2,0,6,8,3,5,8”,程序运行时,在文本框Text1中输入8,则在标签Label1中显示的内容是( )
A.Find!5 B.Fail!8 C.Find!8 D.Fail9
信息技术
解析:本题主要考查的是顺序查找的实现过程。本程序的功能是查找数列中第一个与目标数据相等的数,若找到则在标签Label1中显示“Find!5”,若找不到则在标签Label1中显示“Fail!”,因此答案为A。
答案:A
信息技术
典例二 (2017·浙江4月选考)小王编写了一个实现文字查找替换功能的VB程序,运行界面如图4-3-1所示。文本框Text1显示原文内容,Text2中输入查找内容,Text3中输入替换内容,单击“全部替换”按钮Command1后,Text4显示查找替换的结果,Text5中显示替换的次数,Text6显示“查找内容”在原文中的起始位置。
信息技术
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim s As String, resule As String, pos As String
Dim count As Integer, i As Integer
i = 1︰count = 0
resule = ""︰pos = ""
Do While i <= Len(Text1.Text)
s = Mid(Text1.Text, i, Len(Text2.Text))
If s = Text2.Text Then
result = result+Text3.Text
信息技术
count = count+1
pos =pos+Str(count) ′(1)
i = i+Len(Text2.Text)
Else
result = result