写了个二分法查找函数

今日有csdn的网友问到这个问题,所以写了这个函数,如下:

'二分法查找函数
'功能:在数组中查找指定的值
'返回:若查到指定值则返回相应的索引,否则返回-1
'程序:by Tang 22:06 2005-4-27
Function vbBinarySearch(vb_Array() As Long, ByVal vb_Find As Long) As Long
    Dim SearchMin As Long
    Dim SearchMax As Long
    Dim i As Long
    vbBinarySearch = -1
    SearchMin = LBound(vb_Array)
    SearchMax = UBound(vb_Array)
    Do
       i = (SearchMax + SearchMin) / 2
       If vb_Array(i) = vb_Find Then
          vbBinarySearch = i
          Exit Do
       End If
       If vb_Array(i) > vb_Find Then
          SearchMax = i - 1
       Else
          SearchMin = i + 1
       End If
    Loop While SearchMax >= SearchMin
End Function

Private Sub Command1_Click()
    Dim vbArr(10) As Integer
    Dim i As Long
    For i = 0 To 10
        vbArr(i) = i + 1
    Next i
    i = vbBinarySearch(vbArr, 7)  '在数组中查找7
    MsgBox i
   
    i = vbBinarySearch(vbArr, 5)  '在数组中查找5
    MsgBox i
   
    i = vbBinarySearch(vbArr, 4)  '在数组中查找4
    MsgBox i

    i = vbBinarySearch(vbArr, 108)  '在数组中查找108
    MsgBox i   'i=-1
End Sub

对应的论坛帖子连接是:

http://community.csdn.net/Expert/topic/3971/3971715.xml?temp=.9264643

'-------------------------------------------
' 转载请注明出处
' 作者:唐细刚
' 邮箱:tanaya@163.com
'-------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值