罗列对分查找中可能查到的中点。对分查找是我们常用的查找方式。在对分查找过程中,计算中点是非常重要的步骤。以下程序实现了“罗列对分查找中可能查到的中点”的功能。算法如下:用户在文本框Text1中输入模拟对分查找数据的个数n,单击“产生随机数并升序排列”按钮,在List1中显示n个不重复且已经升序排列的数(范围[1,100]),单击“可能查到的中点”,在list2中分行显示各个可能查到的中点
(1)实现上述功能的VB程序如下,请在横线处填入合适代码。

Private Sub Command1_Click ( )
Dim i As Integer
Randomize
For i=1 To 100
f(i)=False
Next i
n=Val(Text1.Text)
For i=1 To n
t=Int(Rnd*100+1)
Do While f(t)=True
t=Int(Rnd*100+1)t=Int(Rnd*100+1)
Loop
f(t)=True
Next i
j=0
For i=1 To 100
If f(i)=Truef(i)=True Then
j=j+1
a(j)=i
List1.AddItem Str(i)
End If
Next i
End Sub
Private Sub Command2_Click ( )
Dim b(1 To 100)As Integer,k As Integer,c As Integer,max As Integer
Dim s As String
Dim j As Integer
n=Val(Text1.Text)
max=0
For k=1 To n
i=1:j=n:c=0
Do While i<=j
m=(i+j)\2:c=c+1
If c>max Then max=c
If m=k Then b(m)=c:Exit Do
If m<k Then i=m+1 Else j=m-1
Loop
Next k
For i=1 To max
s=““
For j=1 To n
If b(j)=ib(j)=i Then
s=s+Str(a(j))
Else
s=s+““
End If
Next j
List2.AddItem s
Next i
End Sub
(2)当数据是11,22,33,44,55,66,77,88,99时,第3行第3个数为 6666
【考点】查找算法及其程序实现.
【答案】t=Int(Rnd*100+1);f(i)=True;b(j)=i;66
【解答】
【点评】
声明:本试题解析著作权属菁优网所有,未经书面同意,不得复制发布。
发布:2024/6/27 10:35:59组卷:13引用:1难度:0.2
相似题
-
1.某对分查找算法的VB程序段如下:
数组元素a(1)到a(10)的值依次为“12,15,18,20,25,39,47,88,90,99”,经过上述代码查找后,下列表达式正确的是( )发布:2024/12/20 16:0:2组卷:5引用:2难度:0.5 -
2.某数组d中的数据依次是[8,12,15,28,28,32,36,39],要查找某个元素是否在数组中,下列说法正确的是( )
发布:2024/12/20 0:0:1组卷:3引用:1难度:0.7 -
3.有如下对分查找VB程序段:
若数组元素a(1)~a(10)的值依次为“5,9,13,18,22,27,31,39,40,44”,运行程序后,文本
框Text2中显示的内容为3,则输入的key值不可能为( )发布:2024/12/20 20:0:2组卷:3引用:2难度:0.4