内容正文:
二分查找法
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.某算法程序如下:
i=0:j=9:n=0
Randomize
Key=Int(10*Rnd)*2
Do While i <=j
m=(i+j)\2
If Key <=d(m)Then
j=m-1:n=n-1
Else
i=m+1:n=n+1
End If
Loop
Label1. Caption=Str(n)
已知数组元素d(0)到d(9)的值依次是1、4、7、12、12、14、14、18、19、20,则该程序段执行后,Label1上显示的内容不可能是( )
A.-1 B.0 C.1 D.-3
2.某算法的VB程序段如下:
Private Sub Command1_Click()
Dim key As Integer, i As Integer, j As Integer, ans As Integer
Dim n As Integer
n = 10
Dim x(1 To 10) As Integer
x(1) = 5 : x(2) = 52 : x(3) = 2 : x(4) = 72 : x(5) = 86
x(6) = 3256 : x(7) = 123 : x(8) = 25 : x(9) = 30 : x(10) = 87
key = Val(Text1.Text)
i = 1 : j = n : ans = 0
Do While i < j
m = (i + j + 1) \ 2
If key <= x(m) Then
j = m - 1 : ans = ans + 1
Else
i = m + 1 : ans = ans + 2
End If
Loop
End Sub
在Text1中输入3256,单击Command1,程序运行完毕后,以下变量的值不正确的是( )
A.i=6 B.j=5 C.ans=5 D.x(m)=5
3.对一个有n个元素的数组进行操作,所有操作均采用未优化的标准算法,下列说法正确的是( )
A.若数组有序,对其进行一次对分查找,则最多查找次数为Int(log2n)+1
B.对数组进行一次冒泡排序比进行一次选择排序的比较次数要多
C.若数组无序,对其进行一次对分查找,一定不能找到要找的数
D.对数组进行一次查找,最少查找次数与n有关
4.某对分查找算法的VB程序段如下:
key=Val(Text1.Text)
i=1:j=10
Text2.Text=""
Do While i<=j
m=Int((i+j)/2+0.5)
If key=a(m)Then Exit Do
If key<a(m)Then j=m-1 Else i=m+1
Text2.Text=Text2.Text +Str(a(m))
Loop
数组元素a(1)到a(10)的值依次为“1,2,3,4,5,6,7,8,9,10”,文本框Text1中输入的值是4,执行该程序段,文本框Text2中显示的是( )
A.6 3 5 4 B.5 2 3 C.5 3 D.6 3 5
5.某对分查找算法的VB程序段如下:
i=1:j=25
n=0
Do While i<=j
m=(i+j+1)\2
n=n+1
If key=a(m)Then Exit Do
If key>a(m)Then i=m+1Elsej=m-1
Loop
Labe11.Caption=Str(n)
数组元素a(1)~a(25)的值依次为1~25,若查找键key为下列选项的值,程序段执行后,标签Label1中显示的内容与其他三项不同的是( )
A.7 B.12 C.19 D.22
6.有如下 VB 程序段:
Key = Val(Text1.Text):s = 0: i = 1: j = 7
Do While i <= j
m = (i + j) \ 2
s = s + m
If a(m) > Key Then j = m - 1 Else i = m + 1
Loop
Text2.Text = Str(s)
数组元素 a(1)到 a(7)的值依次为“12,15,18,20,20,20,29”,在文本框 Text1 中输入待查数,执行该程序段后,则文本框 Te