随机产生20个1到9之间的整数,将这20个数排序。再用二分法查找7,并将所有7都找出,并显示其位置。

解决方案 »

  1.   


        Dim arrTmp(20) as Integer 
      Dim ind As Integer 
       Call birSearch(arrTmp, LBound(arrTmp), UBound(arrTmp), 7, ind) 
      Print ind Private Sub birSearch(a(), ByVal low%, ByVal high%, ByVal Key, index%) 
      Dim mid As Integer 
      If low > high Then '没有查找到 
          index = -1 
          Exit Sub 
      End If 
      mid = (low + high) \ 2 '取查找区间的中点 
      If Key = a(mid) Then '查找到,返回下标 
          index = mid 
          Exit Sub 
      ElseIf Key < a(mid) Then '查找区间在上半部分 
          high = mid - 1 
      Else 
          low = mid + 1 '查找区间在下半部分 
      End If 
      Call birSearch(a, low, high, Key, index) '递归调用查找函数 
    End Sub