内容正文:
专题5 顺序查找与对分查找算法(专项练习)
1. 某高校学籍管理系统软件有2万个学生的电子档案(已按学籍号排序),假设从中取出一条记录并与待查项进行比较所花时间为8毫秒,则用对分法在该系统中查找任意一位学生档案最多花费的时间约为( )
A. 160毫秒 B. 80毫秒 C. 10毫秒 D. 120毫秒
2. (2016年10月高考【加试题】)某对分査找算法的VB程序段如下:
i = 1: j = 9: n = 0
key = Val(Textl . Text)
Do While i <= j
n = n + 1
m = Fix((i + j) / 2)
If key = d(m) Then Exit Do 'Exit Do表示退出循环
If key < d(m) Then j = m - 1 Else i = m + 1
Loop
数组元素d(1)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n的值为2,则key的值是( )
A. 39 B. 18或61 C. 18或72 D. 12或61
3. 有如下程序段:
Dim i As Integer, j As Integer, m As Integer
i = 0: j = 8: k = Val(Text1.Text)
Do While i <= j
m = Fix((i + j) / 2)
If k = b(m) Then
Exit Do
Else
If k < b(m) Then
j = m
Else
i = m + 1
End If
End If
Loop
数组元素b(0)到b(8)存储着参加比赛同学的编号,依次为“5,8,11,21,32,39,56,65,72”,经过该程序段“加工”查找编号为8的同学的过程中,依次被访问到的编号是( )
A. 32 11 8 B. 21 8 C. 32 8 D. 39 21 8
4. 某分查找算法的 VB 程序段如下:
Key = Val(Textl.Text)
i = 1: j = 10
flag = False
Do While i <= j And flag = False
m = Fix((i + j) / 2)
If a(m) = Key Then flag = True
If Key > a(m) Then j = m - 1 Else i = m + 1
Loop
数组元素 a(1)到 a(10)的值依次:“95, 82, 76, 70, 68, 50, 41,9, 3, 1”,文本框 Text1中输入的值是 32, 运行程序段后, 以下变量的值正确的是( )
A. flag = True B. m = 8 C. i = 8 D. j = 8
5. 某数组的 6 个元素依次为“27,32,57,78,80,90”。若对该数组进行顺序查找,其平均查找次数为(1+2+3+4+5+6)/6=7/2;若对该数组进行对分查找,其平均查找次数为( )
A. 7/2 B. 7/3 C. 5/2 D. 2
6. 某对分查找算法的VB程序段如下:
i = 1 : j = 7 : s = ""
Do While i <= j
m = (i + j) \ 2
If a(m) = Key Then
s = "E":Exit Do
ElseIf a(m) > Key Then
j = m – 1 : s = "L"
Else
i = m + 1 : s = "R"
End If
Loop
数组元素a(1)到a(7)的值依次为“25,42,53,66,77,83,98”,若key=60,运行上述程序段后,下列条件表达式成立的是( )
A. s = "E" B. s = "L" C. s = "R" D. s = "LRR"
7. 某对分查找算法的 VB 程序段如下:
t = "":i = 0 : j = 9 : key=62: f = False
Do While i <= j And Not f
m = Fix((i + j) / 2)
t = t + Str(m)
If a(m) = key Then
f = True
ElseIf a(m) > key Then
i = m + 1 : t = t + "→"
Else
j = m – 1 : t = t + "←"
End If
Loop
数组元素a(0)到a(9)的值依次为“99,94,90,87,78,70,63,56,45,36”,执行该程序段,t的值是( )
A. "4→ 7←