(加试题)数组a中存储的是一组正整数,特征是:①以三个数为一组的话,每组中任意一个数都比前面一组中的任意一个数要大;②每组中三个数依次递减;③数组中数的总个数为3的倍数。依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序如下,但加框处代码有错,请改正。
…… Private Sub Command1_Click() Const n = 15 Dim a(1 To n) As Integer, search As Integer, key As Integer Dim i As Integer, j As Integer, m As Integer '读取一组正整数,按上述规则存入数组a中,代码略。 key = Val(Text1.Text) i = 1: j = n: search = 0 Do While i <= j m = (i + j) \ 2 If m Mod 3 <> 0 Then '① 把m调整到三个一组的最后一个数的位置 If key = a(m) Then search = m : Exit Do ElseIf key < a(m) Then j = m - 3 ElseIf Then '② i = m + 1 ElseIf key = a(m - 2) Then search = m - 2 : Exit Do ElseIf key = a(m - 1) Then search = m - 1 : Exit Do Else search = 0 : Exit Do End If Loop If search <> 0 Then Text2.Text = Str(search) Else Text2.Text = "找不到" End If End Sub 加①②
答案:【1】m+1或m+3-mMod3【2】key> a(m- 2)