求解程序,是在一有序列中查找50 同时统计查找的次数并显示,查找次数 (填入空白处并给出原因),该怎么处理
求解程序,是在一有序列中查找50 同时统计查找的次数并显示,查找次数 (填入空白处并给出原因)
求解程序,是在一有序列中查找50 同时统计查找的次数并显示,查找次数 (填入空白处并给出原因)
------解决方案--------------------
错了...
修正下:
求解程序,是在一有序列中查找50 同时统计查找的次数并显示,查找次数 (填入空白处并给出原因)
- VB code
Private Sub Command16_Click() Dim m As Integer, i As Integer, j As Integer, x As Integer, total As Integer, f As Boolean Dim a(1 To 8) As Integer a(1) =7 : a(4) = 30: a(7) =80 a(2) = 8: a(5) =33: a(8) = 100 a(3) = 10 : a(6) = 50 f = False: x = 50: i = 1: j = 8: to_tal = 0 Do While _____ And f = False total = total + 1 m =________ If a(m) = x Then f = True Else If x < a(m) Then j = m - 1 Else m = m + 1 End If End If Loop If f = True Then Label5.Caption = _________ Else Label5.Caption = "找不到该数据" End If End Sub
------解决方案--------------------
错了...
修正下:
- VB code
Private Sub Command1_Click() Dim m As Integer, i As Integer, j As Integer, x As Integer, total As Integer, f As Boolean Dim a(1 To 8) As Integer a(1) = 7: a(4) = 30: a(7) = 80 a(2) = 8: a(5) = 33: a(8) = 100 a(3) = 10: a(6) = 50 f = False: x = 17: i = 1: j = 8: to_tal = 0 Do While total < UBound(a) And f = False total = total + 1 m = total If a(m) = x Then f = True Else If x < a(m) Then j = m - 1 Else m = m + 1 End If End If Loop If f = True Then Label1.Caption = "查找了 " & total & " 次,找到序列为 a(" & m & ")" Else Label1.Caption = "找不到该数据" End If End Sub
------解决方案--------------------
根据代码,应该是有序序列的居中开始查找,最大查找次数可以比上面的代码减半……但是代码又有一个地方不符
If x < a(m) Then
j = m - 1
Else
j = m + 1
End If